pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/.scripts/nix.sh (about)

     1  #! /bin/bash
     2  
     3  ########################################################################################
     4  
     5  # Main func
     6  #
     7  # *: All arguments passed to script
     8  #
     9  main() {
    10    local version="$1"
    11    local dir="${2:-.}"
    12  
    13    if [[ ! -d $dir ]] ; then
    14      exit 1
    15    fi
    16  
    17    makeLink "$version"
    18    testPackages "$dir"
    19  
    20    exit 0
    21  }
    22  
    23  # Create symlink to directory with import name (pkg.re/essentialkaos/ek)
    24  #
    25  # 1: Major version (String)
    26  #
    27  # Code: No
    28  # Echo: No
    29  makeLink() {
    30    local version="$1"
    31    local pkg_dir="pkg.re/essentialkaos/ek.v${version}"
    32  
    33    # TravicCI download last stable version of ek, but it not ok
    34    # remove downloaded version for linking with current version for test
    35    if [[ -e $GOPATH/src/${pkg_dir} ]] ; then
    36      echo "Directory ${pkg_dir} removed"
    37      rm -rf $GOPATH/src/${pkg_dir}
    38    fi
    39  
    40    mkdir -p $GOPATH/src/pkg.re/essentialkaos
    41  
    42    echo -e "Created link $GOPATH/src/${pkg_dir} → $GOPATH/src/github.com/essentialkaos/ek\n"
    43  
    44    ln -sf $GOPATH/src/github.com/essentialkaos/ek $GOPATH/src/${pkg_dir}
    45  }
    46  
    47  # Test all packages from lis and save coverage info into the file
    48  #
    49  # 1: Dir with sources (String)
    50  #
    51  # Code: No
    52  # Echo: No
    53  testPackages() {
    54    local dir="$1"
    55  
    56    # Remove coverage output if exist
    57    rm -f coverage.tmp coverage.txt &> /dev/null
    58  
    59    # Fix coverage header
    60    echo "mode: count" > coverage.txt
    61  
    62    if [[ -z "$EK_TEST_PORT" ]] ; then
    63      export EK_TEST_PORT=8080
    64    fi
    65  
    66    local has_errors os_flag cover_enabled package_dir
    67    local package_list=".scripts/packages.list"
    68  
    69    while read package ; do
    70  
    71      read os_flag cover_enabled package_dir <<< "$package"
    72  
    73      if ! isOSFit "$os_flag" ; then
    74        continue
    75      fi
    76  
    77      if [[ "$cover_enabled" == "!" ]] ; then
    78        continue
    79      fi
    80  
    81      if [[ "$cover_enabled" == "-" ]] ; then
    82        go test $dir/$package_dir -covermode=count -tags=unit
    83  
    84        if [[ $? -ne 0 ]] ; then
    85          has_errors=true
    86        fi
    87      else
    88        go test -covermode=count -tags=unit -coverprofile=coverage.tmp $dir/$package_dir
    89  
    90        if [[ $? -ne 0 ]] ; then
    91          has_errors=true
    92        fi
    93  
    94        if [[ -f coverage.tmp ]] ; then
    95          egrep -v '^mode:' coverage.tmp >> coverage.txt
    96          rm -f coverage.tmp
    97        fi
    98      fi
    99  
   100    done < <(awk 1 $package_list)
   101  
   102    if [[ $has_errors ]] ; then
   103      exit 1
   104    fi
   105  }
   106  
   107  # Check if tests works on current runner OS
   108  #
   109  # 1: OS flag (String)
   110  #
   111  # Code: Yes
   112  # Echo: No
   113  isOSFit() {
   114    local os_flag="$1"
   115  
   116    if [[ "$os_flag" == "*" ]] ; then
   117      return 0
   118    fi
   119  
   120    if [[ "$os_flag" == "L" && "$RUNNER_OS" == "Linux" ]] ; then
   121      return 0
   122    fi
   123  
   124    if [[ "$os_flag" == "M" && "$RUNNER_OS" == "macOS" ]] ; then
   125      return 0
   126    fi
   127  
   128    return 1
   129  }
   130  
   131  ########################################################################################
   132  
   133  main "$@"