215 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			215 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Go
		
	
	
	
| package actionsglob
 | |
| 
 | |
| import (
 | |
| 	"testing"
 | |
| )
 | |
| 
 | |
| func TestMatch(t *testing.T) {
 | |
| 	type testcase struct {
 | |
| 		Pattern, Target string
 | |
| 		Want            bool
 | |
| 	}
 | |
| 
 | |
| 	run := func(t *testing.T, tc testcase) {
 | |
| 		t.Helper()
 | |
| 
 | |
| 		got := Match(tc.Pattern, tc.Target)
 | |
| 
 | |
| 		if got != tc.Want {
 | |
| 			t.Errorf("%s against %s: want %v, got %v", tc.Pattern, tc.Target, tc.Want, got)
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	t.Run("foo == foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "foo",
 | |
| 			Target:  "foo",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!foo == foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!foo",
 | |
| 			Target:  "foo",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("foo == foo1", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "foo",
 | |
| 			Target:  "foo1",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!foo == foo1", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!foo",
 | |
| 			Target:  "foo1",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("*foo == foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "*foo",
 | |
| 			Target:  "foo",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!*foo == foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!*foo",
 | |
| 			Target:  "foo",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("*foo == 1foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "*foo",
 | |
| 			Target:  "1foo",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!*foo == 1foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!*foo",
 | |
| 			Target:  "1foo",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("*foo == foo1", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "*foo",
 | |
| 			Target:  "foo1",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!*foo == foo1", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!*foo",
 | |
| 			Target:  "foo1",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("*foo* == foo1", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "*foo*",
 | |
| 			Target:  "foo1",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!*foo* == foo1", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!*foo*",
 | |
| 			Target:  "foo1",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("*foo == foobar", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "*foo",
 | |
| 			Target:  "foobar",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!*foo == foobar", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!*foo",
 | |
| 			Target:  "foobar",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("*foo* == foobar", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "*foo*",
 | |
| 			Target:  "foobar",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!*foo* == foobar", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!*foo*",
 | |
| 			Target:  "foobar",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("foo* == foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "foo*",
 | |
| 			Target:  "foo",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!foo* == foo", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!foo*",
 | |
| 			Target:  "foo",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("foo* == foobar", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "foo*",
 | |
| 			Target:  "foobar",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!foo* == foobar", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!foo*",
 | |
| 			Target:  "foobar",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("foo (* == foo ( 1 / 2 )", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "foo (*",
 | |
| 			Target:  "foo ( 1 / 2 )",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!foo (* == foo ( 1 / 2 )", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!foo (*",
 | |
| 			Target:  "foo ( 1 / 2 )",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("actions-*-metrics == actions-workflow-metrics", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "actions-*-metrics",
 | |
| 			Target:  "actions-workflow-metrics",
 | |
| 			Want:    true,
 | |
| 		})
 | |
| 	})
 | |
| 
 | |
| 	t.Run("!actions-*-metrics == actions-workflow-metrics", func(t *testing.T) {
 | |
| 		run(t, testcase{
 | |
| 			Pattern: "!actions-*-metrics",
 | |
| 			Target:  "actions-workflow-metrics",
 | |
| 			Want:    false,
 | |
| 		})
 | |
| 	})
 | |
| }
 |