#   Copyright 2011-2016 Free Software Foundation, Inc.

# This program 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 3 of the License, or
# (at your option) any later version.
#
# This program 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 this program.  If not, see <http://www.gnu.org/licenses/>.

# This file was written by Justin Lebar. (justin.lebar@gmail.com)
# And further hacked on by Doug Evans. (dje@google.com)

if { [prepare_for_testing skip.exp "skip" \
                          {skip.c skip1.c } \
                          {debug nowarnings}] } {
    return -1
}

set srcfile skip.c
set srcfile1 skip1.c

# Right after we start gdb, there's no default file or function to skip.

gdb_test "skip file" "No default file now." "skip file (no default file)"
gdb_test "skip function" "No default function now."
gdb_test "skip" "No default function now." "skip (no default function)"

# Test elided args.

gdb_test "skip -fi" "Missing value for -fi option."
gdb_test "skip -file" "Missing value for -file option."
gdb_test "skip -fu" "Missing value for -fu option."
gdb_test "skip -function" "Missing value for -function option."
gdb_test "skip -rfu" "Missing value for -rfu option."
gdb_test "skip -rfunction" "Missing value for -rfunction option."

# Test other invalid option combinations.

gdb_test "skip -x" "Invalid skip option: -x"
gdb_test "skip -rfu foo.* xyzzy" "Invalid argument: xyzzy"

if ![runto_main] {
    fail "Can't run to main"
    return
}

# Test |info skip| with an empty skiplist.

gdb_test "info skip" "Not skipping any files or functions\." "info skip empty"

# Create a skiplist entry for the current file and function.

gdb_test "skip file" "File .*$srcfile will be skipped when stepping\." "skip file ($srcfile)"
gdb_test "skip" "Function main will be skipped when stepping\." "skip (main)"

# Create a skiplist entry for a specified file and function.

gdb_test "skip file skip1.c" "File .*$srcfile1 will be skipped when stepping\."
gdb_test "skip function baz" "Function baz will be skipped when stepping\."

# Test bad skiplist entry modification commands

gdb_test "skip enable 999" "No skiplist entries found with number 999."
gdb_test "skip disable 999" "No skiplist entries found with number 999."
gdb_test "skip delete 999" "No skiplist entries found with number 999."
gdb_test "skip enable a" "Args must be numbers or '\\$' variables."
gdb_test "skip disable a" "Args must be numbers or '\\$' variables."
gdb_test "skip delete a" "Args must be numbers or '\\$' variables."

# Ask for info on a skiplist entry which doesn't exist.

gdb_test "info skip 999" "No skiplist entries found with number 999."

# Does |info skip| look right?

gdb_test "info skip" \
    "Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
1\\s+y\\s+n\\s+.*$srcfile\\s+n\\s+<none>\\s*
2\\s+y\\s+n\\s+<none>\\s+n\\s+main\\s*
3\\s+y\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*
4\\s+y\\s+n\\s+<none>\\s+n\\s+baz\\s*"

# Right now, we have an outstanding skiplist entry on both source
# files, so when we step into the first line in main(), we should step
# right over it and go to the second line of main().

if ![runto_main] {
    fail "Can't run to main"
    return
}

gdb_test "step" ".*" "step in the main"
gdb_test "bt" "\\s*\\#0\\s+main.*" "step after all ignored"

# Now remove skip.c from the skiplist.  Our first step should take us
# into foo(), and our second step should take us to the next line in main().

with_test_prefix "step after deleting 1" {
    gdb_test "skip delete 1"
    # Check that entry 1 is missing from |info skip|
    gdb_test "info skip" \
	"Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
2\\s+y\\s+n\\s+<none>\\s+n\\s+main\\s*
3\\s+y\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*
4\\s+y\\s+n\\s+<none>\\s+n\\s+baz\\s*" \
	"info skip (delete 1)"

    if ![runto_main] {
	fail "Can't run to main"
	return
    }

    gdb_test "step" "foo \\(\\) at.*" "step 1"
    gdb_test "step" ".*" "step 2" ; # Return from foo()
    gdb_test "step" "main \\(\\) at.*" "step 3"
}

# Now disable the skiplist entry for  skip1.c.  We should now
# step into foo(), then into bar(), but not into baz().

with_test_prefix "step after disabling 3" {
    gdb_test "skip disable 3"
    # Is entry 3 disabled in |info skip|?
    gdb_test "info skip 3" \
	"3\\s+n\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*" \
	"info skip shows entry as disabled"

    if ![runto_main] {
	fail "Can't run to main"
	return
    }

    gdb_test "step" "bar \\(\\) at.*" "step 1"
    gdb_test "step" ".*" "step 2"; # Return from foo()
    gdb_test "step" "foo \\(\\) at.*" "step 3"
    gdb_test "step" ".*" "step 4"; # Return from bar()
    gdb_test "step" "main \\(\\) at.*" "step 5"
}

# Enable skiplist entry 3 and make sure we step over it like before.

with_test_prefix "step after enable 3" {
    gdb_test "skip enable 3"
    # Is entry 3 enabled in |info skip|?
    gdb_test "info skip 3" \
	"3\\s+y\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*" \
	"info skip shows entry as enabled"

    if ![runto_main] {
	fail "Can't run to main"
	return
    }

    gdb_test "step" "foo \\(\\) at.*" "step 1"
    gdb_test "step" ".*" "step 2"; # Return from foo()
    gdb_test "step" "main \\(\\) at.*" "step 3"
}

# Admin tests (disable,enable,delete).

with_test_prefix "admin" {
    gdb_test "skip disable"
    gdb_test "info skip" \
	"Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
2\\s+n\\s+n\\s+<none>\\s+n\\s+main\\s*
3\\s+n\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*
4\\s+n\\s+n\\s+<none>\\s+n\\s+baz\\s*" \
	"info skip after disabling all"

    gdb_test "skip enable"
    gdb_test "info skip" \
	"Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
2\\s+y\\s+n\\s+<none>\\s+n\\s+main\\s*
3\\s+y\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*
4\\s+y\\s+n\\s+<none>\\s+n\\s+baz\\s*" \
	"info skip after enabling all"

    gdb_test "skip disable 4 2-3"
    gdb_test "info skip" \
	"Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
2\\s+n\\s+n\\s+<none>\\s+n\\s+main\\s*
3\\s+n\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*
4\\s+n\\s+n\\s+<none>\\s+n\\s+baz\\s*" \
	"info skip after disabling 4 2-3"

    gdb_test "skip enable 2-3"
    gdb_test "info skip" \
	"Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
2\\s+y\\s+n\\s+<none>\\s+n\\s+main\\s*
3\\s+y\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*
4\\s+n\\s+n\\s+<none>\\s+n\\s+baz\\s*" \
	"info skip after enabling 2-3"

    gdb_test "info skip 2-3" \
	"Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
2\\s+y\\s+n\\s+<none>\\s+n\\s+main\\s*
3\\s+y\\s+n\\s+$srcfile1\\s+n\\s+<none>\\s*" \
	"info skip 2-3"

    gdb_test "skip delete 2 3"
    gdb_test "info skip" \
	"Num\\s+Enb\\s+Glob\\s+File\\s+RE\\s+Function\\s*
4\\s+n\\s+n\\s+<none>\\s+n\\s+baz\\s*" \
	"info skip after deleting 2 3"

    gdb_test "skip delete"
    gdb_test "info skip" "Not skipping any files or functions\." \
	"info skip after deleting all"
}

# Now test skip -fi, etc.

# Create a skiplist entry for a specified file and function.
gdb_test "skip -fi skip1.c" "File .*$srcfile1 will be skipped when stepping\."
gdb_test "skip -gfi sk*1.c" "File\\(s\\) sk\\*1.c will be skipped when stepping\."
gdb_test "skip -fu baz" "Function baz will be skipped when stepping\."
gdb_test "skip -rfu ^b.z$" "Function\\(s\\) \\^b\\.z\\$ will be skipped when stepping."

with_test_prefix "step using -fi" {
    if ![runto_main] {
	fail "Can't run to main"
	return
    }

    gdb_test_no_output "skip disable"
    gdb_test_no_output "skip enable 5"
    gdb_test "step" "foo \\(\\) at.*" "step 1"
    gdb_test "step" ".*" "step 2"; # Return from foo()
    gdb_test "step" "main \\(\\) at.*" "step 3"
}

with_test_prefix "step using -gfi" {
    if ![runto_main] {
	fail "Can't run to main"
	return
    }

    gdb_test_no_output "skip disable"
    gdb_test_no_output "skip enable 6"
    gdb_test "step" "foo \\(\\) at.*" "step 1"
    gdb_test "step" ".*" "step 2"; # Return from foo()
    gdb_test "step" "main \\(\\) at.*" "step 3"
}

with_test_prefix "step using -fu for baz" {
    if ![runto_main] {
	fail "Can't run to main"
	return
    }

    gdb_test_no_output "skip disable"
    gdb_test_no_output "skip enable 7"
    gdb_test "step" "bar \\(\\) at.*" "step 1"
    gdb_test "step" ".*" "step 2"; # Return from bar()
    gdb_test "step" "foo \\(\\) at.*" "step 3"
    gdb_test "step" ".*" "step 4"; # Return from foo()
    gdb_test "step" "main \\(\\) at.*" "step 5"
}

with_test_prefix "step using -rfu for baz" {
    if ![runto_main] {
	fail "Can't run to main"
	return
    }

    gdb_test_no_output "skip disable"
    gdb_test_no_output "skip enable 8"
    gdb_test "step" "bar \\(\\) at.*" "step 1"
    gdb_test "step" ".*" "step 2"; # Return from bar()
    gdb_test "step" "foo \\(\\) at.*" "step 3"
    gdb_test "step" ".*" "step 4"; # Return from foo()
    gdb_test "step" "main \\(\\) at.*" "step 5"
}

# Test -fi + -fu.

with_test_prefix "step using -fi + -fu" {
    gdb_test_no_output "skip delete"

    if ![runto test_skip_file_and_function no-message] {
	fail "Can't run to test_skip_file_and_function"
	return
    }

    gdb_test "skip -fi skip1.c -fu test_skip" \
	"Function test_skip in file skip1.c will be skipped when stepping\."
    # Verify we can step into skip.c:test_skip but not skip1.c:test_skip.
    gdb_test "step" "test_skip \\(\\) at.*" "step 1"
    gdb_test "step" "test_skip_file_and_function \\(\\) at.*" "step 2"; # Return from test_skip()
    gdb_test "step" "skip1_test_skip_file_and_function \\(\\) at.*" "step 3"
    gdb_test "step" ".*" "step 4"; # Skip over test_skip()
    gdb_test "step" "test_skip_file_and_function \\(\\) at.*" "step 5"; # Return from skip1_test_skip_file_and_function()
}
