FROM ubuntu:24.04

RUN apt-get update -y
RUN apt-get install -y --fix-missing \
        pkg-config
RUN apt-get install -y \
        autoconf \
        automake \
        binutils-dev \
        bison \
        busybox \
        cmake \
        cmake-data \
        flex \
        g++-multilib \
        gawk \
        gcc-multilib \
        gettext \
        install-info \
        libarchive-extract-perl \
        ffmpeg \
        libcurl4-openssl-dev \
        libdw-dev \
        libelf-dev \
        libssl-dev \
        libwww-perl \
        make \
        mawk \
        mediainfo \
        mplayer \
        ncurses-dev \
        original-awk \
        p7zip-full \
        patch \
        shunit2 \
        sudo \
        texinfo \
        wget \
        zlib1g \
        zlib1g-dev

RUN apt-get install -y \
        python3 \
        python3-venv \
        python-is-python3 \
        python3-pip \
        python3-setuptools

RUN apt-get install -y \
        jq

# set-up environment
ENV NAPI_UNITTESTER_SOURCE=/usr/src/napi
ENV NAPI_UNITTESTER_TESTS_SOURCE=/usr/src/napi/tests

ENV NAPI_UNITTESTER_HOME=/home/napi_unittester
ENV NAPI_UNITTESTER_BIN=$NAPI_UNITTESTER_HOME/bin
ENV NAPI_UNITTESTER_OPT=/opt/napi
ENV NAPI_UNITTESTER_TESTDATA=$NAPI_UNITTESTER_OPT/testdata
ENV NAPI_UNITTESTER_SHELLS=$NAPI_UNITTESTER_OPT/bash

RUN useradd -m -U napi_unittester -d $NAPI_UNITTESTER_HOME
RUN usermod -a -G sudo napi_unittester
RUN mkdir -p $NAPI_UNITTESTER_SOURCE

# setup shells and test assets
ADD common $NAPI_UNITTESTER_TESTS_SOURCE/common
ADD napi_unittester $NAPI_UNITTESTER_TESTS_SOURCE/napi_unittester

ENV PATH=$NAPI_UNITTESTER_TESTS_SOURCE/napi_unittester/bin:$PATH
WORKDIR $NAPI_UNITTESTER_TESTS_SOURCE

RUN prepare_kcov.pl
RUN prepare_scpmocker.pl
RUN prepare_shells.pl $napi_unittester
RUN prepare_assets.pl $NAPI_UNITTESTER_TESTDATA

# allow members of sudo group to execute sudo without password
RUN echo "%sudo ALL=(ALL:ALL) NOPASSWD:ALL" > /etc/sudoers.d/nopasswd
RUN chmod 0440 /etc/sudoers.d/nopasswd

# switch to test user
WORKDIR $NAPI_UNITTESTER_HOME
USER napi_unittester
RUN mkdir -p $NAPI_UNITTESTER_BIN
