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