Commit 1e0edbc8 authored by Jakob Moser's avatar Jakob Moser
Browse files

Add verification logic for practice exercises where possible

parent c9ac0183
Loading
Loading
Loading
Loading
+36 −2
Original line number Diff line number Diff line
@@ -13,58 +13,92 @@ export const practice = test("Linux-Übungsmodus", function() {

    this.exercise("Verzeichnisinhalt anzeigen", async function () {
        this.describe(`Lass dir anzeigen, ob und wenn ja welche Dateien sich in diesem Verzeichnis befinden.`)

        // TODO Add verification logic
    })

    this.exercise("Auch versteckte Dateien anzeigen", async function () {
        this.describe(`Lass dir anzeigen, welche Dateien sich in diesem Verzeichnis befinden (inklusive versteckter Dateien).`)

        // TODO Add verification logic
    })

    this.exercise("Verzeichnis anlegen", async function () {
        this.describe(`Erstelle einen Ordner (= ein Verzeichnis) mit dem Namen "tux" (ohne Anführungszeichen).`)

        await this.manualConfirmation()

        this.verify("if [[ -d tux ]]; then echo yes; else echo no; fi").hasOutput("yes")
    })

    this.exercise("Aktuelles Verzeichnis anzeigen", async function () {
        this.describe("Lass dir anzeigen, in welchem Verzeichnis du gerade arbeitest.")

        // TODO Add verification logic
    })

    this.exercise("Verzeichnis wechseln", async function() {
        this.describe(`Wechsele in das von dir erstelle Verzeichnis "tux".`)

        await this.manualConfirmation()

        this.verify("pwd").hasOutput("/root/tux")
    })

    this.exercise("Datei anlegen", async function () {
        this.describe(`Erstelle eine Textdatei mit dem Namen "satz" und dem Inhalt "Colorless green ideas sleep furiously." 
                      (jeweils ohne Anführungszeichen).`)

        await this.manualConfirmation()

        this.verify("cat satz").hasOutput("Colorless green ideas sleep furiously.")
    })

    this.exercise("Datei umbenennen", async function () {
        this.describe(`Ändere den Namen der Datei "satz" in "sätze".`)

        await this.manualConfirmation()

        this.verify("if [[ -f sätze && ! -f satz ]]; then echo yes; else echo no; fi").hasOutput("yes")
    })

    this.exercise("Datei bearbeiten", async function () {
        this.describe(`Füge die Zeile "The cat is on the mat." ans Ende der Datei "sätze" an.`)

        this.verify("cat sätze").hasOutput(["Colorless green ideas sleep furiously.", "The cat is on the mat."])
    })

    this.exercise("Inhalt anzeigen", async function () {
        this.describe(`Zeige den Inhalt der Datei "sätze" auf der Konsole an.`)

        // TODO Add verification logic
    })

    this.exercise("Berechtigungen ändern", async function () {
        this.describe(`Ändere die Dateirechte von "sätze" so, dass der Besitzer die Datei nur lesen kann, die besitzende Gruppe die Datei lesen und schreiben kann und alle anderen gar nichts dürfen.`)

        this.verify("ls -ld sätze").hasOutput((outputLines) => {
            return outputLines.length === 1 && outputLines[0].substring(0, 10).match(/-r--rw----/)
        })
    })

    this.exercise("Berechtigungen anzeigen", async function () {
        this.describe(`Lass dir die aktuellen Berechtigungen für die Datei "sätze" anzeigen.`)

        // TODO Add verification logic
    })

    this.exercise("Datei löschen", async function () {
        this.describe(`Lösche die Datei "sätze".`)

        this.verify("if [[ ! -e sätze ]]; then echo yes; else echo no; fi").hasOutput("yes")
    })

    this.exercise("Freies Spiel", async function () {
        this.describe(`Wir haben leider keine weiteren Übungsaufgaben mehr vorbereitet, aber fühle dich frei, noch weiter herumzuspielen (zum Beispiel mit Dateirechten).`)
    })

    // TODO Add practice exercises
        this.verify("echo if you say so").hasOutput("if you say so")
    })
})

export const pooltest = test("Pooltest Sommersemester 2022", async function () {