#!/bin/bash

# basic test to ensure that package-install files remain sorted
# alphabetically.

TOP=$(cd $(dirname "$0")/.. && pwd)

source $TOP/tests/unittest.sh

export LC_ALL=en_US.UTF-8
PKG_FILES=$(find $TOP/files/debs $TOP/files/rpms $TOP/files/rpms-suse -type f)

TMPDIR=$(mktemp -d)

SORTED=${TMPDIR}/sorted
UNSORTED=${TMPDIR}/unsorted

for p in $PKG_FILES; do
    grep -v '^#' $p > ${UNSORTED}
    sort ${UNSORTED} > ${SORTED}

    if [ -n "$(diff -c ${UNSORTED} ${SORTED})" ]; then
        failed "$p is unsorted"
        # output this, it's helpful to see what exactly is unsorted
        diff -c ${UNSORTED} ${SORTED}
    else
        passed "$p is sorted"
    fi
done

rm -rf ${TMPDIR}

report_results
