#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          Test of scancel quiet option (--quiet option).
############################################################################
# Copyright (C) 2002 The Regents of the University of California.
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Morris Jette <jette1@llnl.gov>
# CODE-OCEC-09-009. All rights reserved.
#
# This file is part of Slurm, a resource management program.
# For details, see <https://slurm.schedmd.com/>.
# Please also read the included file: DISCLAIMER.
#
# Slurm is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
#
# Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with Slurm; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA.
############################################################################
source ./globals

#
# Submit a job so we have something to work with
#
set job_id [submit_job -fail "--output=/dev/null --error=/dev/null --hold -t1 --wrap='$bin_sleep 30'"]

#
# Test basic scancel
#
set output [run_command_output -fail "$scancel -v $job_id"]
subtest {![regexp "error" $output]} "Verify that basic scancel doesn't print an error"

wait_for_job -fail -timeout 10 $job_id "DONE"
subtest {[get_job_param $job_id "JobState"] eq "CANCELLED"} "Verify job ($job_id) was CANCELLED" "[get_job_param $job_id "JobState"] != CANCELLED"

#
# Test basic scancel with job already killed
# Note that scancel is NOT expected to fail (see Bug 12542)
#
set output [run_command_output -fail "$scancel -v $job_id"]
subtest {[regexp "error" $output]} "Verify that basic scancel with job already killed prints an error"

#
# Test of --quiet option
#
set output [run_command_output -fail "$scancel --quiet $job_id"]
subtest {![regexp "error" $output]} "Verify that basic scancel --quiet with job already killed doesn't print an error"
