github.com/charypar/monobuild@v0.0.0-20211122220434-fd884ed50212/test/e2e.sh (about) 1 #!/usr/bin/env sh 2 3 # 1. Setup 4 5 RED='\033[0;31m' 6 GREEN='\033[0;32m' 7 NC='\033[0m' # No Color 8 9 SUCCESS="${GREEN}✔︎${NC} " 10 FAILURE="${RED}✘${NC} " 11 12 if [ "$1" = "rust" ] ; then 13 wd=$(pwd) 14 mb="$wd/rs/target/debug/monobuild" 15 else 16 gopath=`go env GOPATH` 17 mb="$gopath/bin/monobuild" 18 fi 19 cd ./test/fixtures/manifests-test 20 21 exit_status=0 22 23 # Test helper 24 25 assert_eq() 26 { 27 title=$1 28 actual=$2 29 expected=$3 30 31 if [ "$actual" = "$expected" ]; then 32 printf "${SUCCESS} $title\n" 33 else 34 printf "${FAILURE} $title\n" 35 printf "${GREEN}Expected${NC}:\n\"$expected\"\n" 36 printf "${RED}Actual${NC}:\n\"$actual\"\n" 37 exit_status=1 38 fi 39 } 40 41 # Tests 42 43 44 printf "Print command:\n" 45 46 # monobuild print 47 actual=$($mb print) 48 expected="app1: 49 app2: 50 app3: 51 app4: 52 app4/lib: 53 libs/lib1: 54 libs/lib2: 55 libs/lib3: 56 stack1: app1, app2, app3" 57 58 assert_eq "monobuild print" "$actual" "$expected" 59 60 # monobuild print --top-level 61 actual=$($mb print --top-level) 62 expected="app4: 63 stack1: " 64 65 assert_eq "monobuild print --top-level" "$actual" "$expected" 66 67 # monobuild print --dependencies 68 actual=$($mb print --dependencies) 69 expected="app1: libs/lib1, libs/lib2 70 app2: libs/lib2, libs/lib3 71 app3: app4/lib, libs/lib3 72 app4: 73 app4/lib: 74 libs/lib1: libs/lib3 75 libs/lib2: libs/lib3 76 libs/lib3: 77 stack1: app1, app2, app3" 78 79 assert_eq "monobuild print --dependencies" "$actual" "$expected" 80 81 # monobuild print --dependencies --top-level 82 actual=$($mb print --dependencies --top-level) 83 expected="app4: 84 stack1: " 85 86 assert_eq "monobuild print --dependencies --top-level" "$actual" "$expected" 87 88 # monobuild print --dependencies --scope app1 89 actual=$($mb print --dependencies --scope app1) 90 expected="app1: libs/lib1, libs/lib2 91 libs/lib1: libs/lib3 92 libs/lib2: libs/lib3 93 libs/lib3: " 94 95 assert_eq "monobuild print --dependencies --scope app1" "$actual" "$expected" 96 97 # monobuild print --full 98 actual=$($mb print --full) 99 expected="app1: libs/lib1, libs/lib2 100 app2: libs/lib2, libs/lib3 101 app3: app4/lib, libs/lib3 102 app4: 103 app4/lib: 104 libs/lib1: libs/lib3 105 libs/lib2: libs/lib3 106 libs/lib3: 107 stack1: !app1, !app2, !app3" 108 109 assert_eq "monobuild print --full" "$actual" "$expected" 110 111 # monobuild print -f dependencies.mb --full 112 manifest="one: libs/one, libs/two 113 two: libs/two, libs/three 114 three: libs/three 115 four: 116 libs/one: libs/three 117 libs/two: libs/three 118 libs/three: 119 stack: !one, !two, !three" 120 echo "$manifest" > dependencies.mb 121 actual=$($mb print -f dependencies.mb --full) 122 expected="four: 123 libs/one: libs/three 124 libs/three: 125 libs/two: libs/three 126 one: libs/one, libs/two 127 stack: !one, !three, !two 128 three: libs/three 129 two: libs/three, libs/two" 130 131 assert_eq "monobuild print -f dependencies.mb --full" "$actual" "$expected" 132 133 rm dependencies.mb 134 135 # monobuild diff 136 printf "\nDiff command:\n" 137 138 # monobuild diff 139 changes="libs/lib2/change.txt 140 app4/lib/lib.bin" 141 142 actual=$(echo "$changes" | $mb diff -) 143 expected="app1: 144 app2: 145 app3: 146 app4: 147 app4/lib: 148 libs/lib2: 149 stack1: app1, app2, app3" 150 151 assert_eq "monobuild diff" "$actual" "$expected" 152 153 # monobuild diff --scope app2 154 changes="libs/lib2/change.txt 155 app4/app.bin" 156 157 actual=$(echo "$changes" | $mb diff --scope app2 -) 158 expected="app2: 159 libs/lib2: " 160 161 assert_eq "monobuild diff --scope app2" "$actual" "$expected" 162 163 # monobuild diff --rebuild-strong 164 changes="libs/lib2/change.txt 165 app4/app.bin" 166 167 actual=$(echo "$changes" | $mb diff --rebuild-strong -) 168 expected="app1: 169 app2: 170 app3: 171 app4: 172 libs/lib2: 173 stack1: app1, app2, app3" 174 175 assert_eq "monobuild diff --rebuild-strong" "$actual" "$expected" 176 177 # monobuild diff --rebuild-strong --scope app2 178 changes="libs/lib2/change.txt 179 app4/app.bin" 180 181 actual=$(echo "$changes" | $mb diff --rebuild-strong --scope app2 -) 182 expected="app2: 183 libs/lib2: " 184 185 assert_eq "monobuild diff --rebuild-strong --scope app2" "$actual" "$expected" 186 187 # monobuild diff --top-level 188 changes="libs/lib2/change.txt 189 app4/app.bin" 190 191 actual=$(echo "$changes" | $mb diff --top-level -) 192 expected="app4: 193 stack1: " 194 195 assert_eq "monobuild diff --top-level" "$actual" "$expected" 196 197 # monobuild diff --dependencies 198 actual=$(echo "$changes" | $mb diff --dependencies -) 199 expected="app1: libs/lib2 200 app2: libs/lib2 201 app4: 202 libs/lib2: 203 stack1: app1, app2" 204 205 assert_eq "monobuild diff --dependencies" "$actual" "$expected" 206 207 # monobuild diff --dependencies --scope app2 208 actual=$(echo "$changes" | $mb diff --dependencies --scope app2 -) 209 expected="app2: libs/lib2 210 libs/lib2: " 211 212 assert_eq "monobuild diff --dependencies --scope app2" "$actual" "$expected" 213 214 # monobuild diff --dependencies --rebuild-strong 215 changes="libs/lib2/change.txt 216 app4/app.bin" 217 218 actual=$(echo "$changes" | $mb diff --dependencies --rebuild-strong -) 219 expected="app1: libs/lib2 220 app2: libs/lib2 221 app3: 222 app4: 223 libs/lib2: 224 stack1: app1, app2, app3" 225 226 assert_eq "monobuild diff --dependencies --rebuild-strong" "$actual" "$expected" 227 228 # monobuild diff --dependencies --rebuild-strong --scope app2 229 # Scope has priority 230 changes="libs/lib2/change.txt 231 app4/app.bin" 232 233 actual=$(echo "$changes" | $mb diff --dependencies --rebuild-strong --scope app2 -) 234 expected="app2: libs/lib2 235 libs/lib2: " 236 237 assert_eq "monobuild diff --dependencies --rebuild-strong --scope app2" "$actual" "$expected" 238 239 # monobuild diff --dependencies --top-level 240 # --top-level trumps --dependencies 241 changes="libs/lib2/change.txt 242 app4/app.bin" 243 244 actual=$(echo "$changes" | $mb diff --dependencies --top-level -) 245 expected="app4: 246 stack1: " 247 248 assert_eq "monobuild diff --dependencies --top-level" "$actual" "$expected" 249 250 # monobuild diff --dependencies --top-level --scope app4 251 # --top-level trumps --dependencies 252 changes="libs/lib2/change.txt 253 app4/app.bin" 254 255 actual=$(echo "$changes" | $mb diff --dependencies --top-level --scope app4 -) 256 expected="app4: " 257 258 assert_eq "monobuild diff --dependencies --top-level --scope app4" "$actual" "$expected" 259 260 # monobuild diff --full 261 actual=$(echo "$changes" | $mb diff --full -) 262 expected="app1: libs/lib2 263 app2: libs/lib2 264 app4: 265 libs/lib2: 266 stack1: !app1, !app2" 267 268 assert_eq "monobuild diff --full" "$actual" "$expected" 269 270 # Return a status based on success 271 exit $exit_status 272