From 7549c53a38c726bd243cf48d802332bd7c2449fb Mon Sep 17 00:00:00 2001 From: draveness Date: Tue, 23 Jul 2019 17:25:57 +0800 Subject: [PATCH] fix: return empty string when status is nil --- pkg/scheduler/framework/v1alpha1/BUILD | 8 +- pkg/scheduler/framework/v1alpha1/interface.go | 8 +- .../framework/v1alpha1/interface_test.go | 76 +++++++++++++++++++ 3 files changed, 87 insertions(+), 5 deletions(-) create mode 100644 pkg/scheduler/framework/v1alpha1/interface_test.go diff --git a/pkg/scheduler/framework/v1alpha1/BUILD b/pkg/scheduler/framework/v1alpha1/BUILD index 63a51c5ae93..9f8fdf87a5a 100644 --- a/pkg/scheduler/framework/v1alpha1/BUILD +++ b/pkg/scheduler/framework/v1alpha1/BUILD @@ -1,4 +1,4 @@ -load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") go_library( name = "go_default_library", @@ -36,3 +36,9 @@ filegroup( tags = ["automanaged"], visibility = ["//visibility:public"], ) + +go_test( + name = "go_default_test", + srcs = ["interface_test.go"], + embed = [":go_default_library"], +) diff --git a/pkg/scheduler/framework/v1alpha1/interface.go b/pkg/scheduler/framework/v1alpha1/interface.go index 1a8e647335a..b13950e4d12 100644 --- a/pkg/scheduler/framework/v1alpha1/interface.go +++ b/pkg/scheduler/framework/v1alpha1/interface.go @@ -71,15 +71,15 @@ func (s *Status) Code() Code { // Message returns message of the Status. func (s *Status) Message() string { + if s == nil { + return "" + } return s.message } // IsSuccess returns true if and only if "Status" is nil or Code is "Success". func (s *Status) IsSuccess() bool { - if s == nil || s.code == Success { - return true - } - return false + return s.Code() == Success } // AsError returns an "error" object with the same message as that of the Status. diff --git a/pkg/scheduler/framework/v1alpha1/interface_test.go b/pkg/scheduler/framework/v1alpha1/interface_test.go new file mode 100644 index 00000000000..466f2ceb068 --- /dev/null +++ b/pkg/scheduler/framework/v1alpha1/interface_test.go @@ -0,0 +1,76 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "errors" + "testing" +) + +func TestStatus(t *testing.T) { + tests := []struct { + status *Status + expectedCode Code + expectedMessage string + expectedIsSuccess bool + expectedAsError error + }{ + { + status: NewStatus(Success, ""), + expectedCode: Success, + expectedMessage: "", + expectedIsSuccess: true, + expectedAsError: nil, + }, + { + status: NewStatus(Error, "unknown error"), + expectedCode: Error, + expectedMessage: "unknown error", + expectedIsSuccess: false, + expectedAsError: errors.New("unknown error"), + }, + { + status: nil, + expectedCode: Success, + expectedMessage: "", + expectedIsSuccess: true, + expectedAsError: nil, + }, + } + + for i, test := range tests { + if test.status.Code() != test.expectedCode { + t.Errorf("test #%v, expect status.Code() returns %v, but %v", i, test.expectedCode, test.status.Code()) + } + + if test.status.Message() != test.expectedMessage { + t.Errorf("test #%v, expect status.Message() returns %v, but %v", i, test.expectedMessage, test.status.Message()) + } + + if test.status.IsSuccess() != test.expectedIsSuccess { + t.Errorf("test #%v, expect status.IsSuccess() returns %v, but %v", i, test.expectedIsSuccess, test.status.IsSuccess()) + } + + if test.status.AsError() == test.expectedAsError { + continue + } + + if test.status.AsError().Error() != test.expectedAsError.Error() { + t.Errorf("test #%v, expect status.AsError() returns %v, but %v", i, test.expectedAsError, test.status.AsError()) + } + } +}