Skip to content

Commit ae653ff

Browse files
authored
add error message for empty parameters (#162)
1 parent 90d5ac1 commit ae653ff

File tree

2 files changed

+34
-17
lines changed

2 files changed

+34
-17
lines changed

dataset/dataset.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ func (t *Target) SetupHaddock3Scenario(wd string, s input.Scenario) (runner.Job,
215215
}
216216

217217
// WriteRunToml writes the run.toml file
218-
func (t *Target) WriteRunToml(projectDir string, general map[string]interface{}, mod input.ModuleParams) (string, error) {
218+
func (t *Target) WriteRunToml(projectDir string, general map[string]any, mod input.ModuleParams) (string, error) {
219219
runTomlString := ""
220220
for k, v := range general {
221221
switch v := v.(type) {
@@ -284,7 +284,11 @@ func (t *Target) WriteRunToml(projectDir string, general map[string]interface{},
284284
m = "'" + m + "'"
285285
}
286286
runTomlString += "[" + m + "]\n"
287-
for k, v := range field.Interface().(map[string]interface{}) {
287+
for k, v := range field.Interface().(map[string]any) {
288+
// Check if v is nil
289+
if v == nil {
290+
return "", errors.New("Parameter " + k + " is empty (nil), please check your input")
291+
}
288292
// Find the file to be used as fname
289293
if strings.Contains(k, "_fname") {
290294
pattern := regexp.MustCompile(v.(string))
@@ -316,7 +320,7 @@ func (t *Target) WriteRunToml(projectDir string, general map[string]interface{},
316320
runTomlString += k + " = [" + strings.Join(utils.IntSliceToStringSlice(v), ",") + "]\n"
317321
case []float64:
318322
runTomlString += k + " = [" + strings.Join(utils.FloatSliceToStringSlice(v), ",") + "]\n"
319-
case []interface{}:
323+
case []any:
320324
runTomlString += k + " = [" + strings.Join(utils.InterfaceSliceToStringSlice(v), ",") + "]\n"
321325
}
322326
}

dataset/dataset_test.go

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -740,7 +740,7 @@ func TestTarget_WriteRunToml(t *testing.T) {
740740
}
741741
type args struct {
742742
projectDir string
743-
general map[string]interface{}
743+
general map[string]any
744744
mod input.ModuleParams
745745
}
746746
tests := []struct {
@@ -750,6 +750,19 @@ func TestTarget_WriteRunToml(t *testing.T) {
750750
want string
751751
wantErr bool
752752
}{
753+
{
754+
name: "fail-with-nil-fname-field",
755+
fields: fields{},
756+
args: args{
757+
mod: input.ModuleParams{
758+
Order: []string{"topoaa"},
759+
Topoaa: map[string]any{
760+
"param_fname": nil,
761+
},
762+
},
763+
},
764+
wantErr: true,
765+
},
753766
{
754767
name: "pass",
755768
fields: fields{
@@ -762,7 +775,7 @@ func TestTarget_WriteRunToml(t *testing.T) {
762775
},
763776
args: args{
764777
projectDir: "_some-workdir",
765-
general: map[string]interface{}{
778+
general: map[string]any{
766779
"receptor": "receptor.pdb",
767780
"ligand": "ligand.pdb",
768781
"int": 10,
@@ -774,32 +787,32 @@ func TestTarget_WriteRunToml(t *testing.T) {
774787
},
775788
mod: input.ModuleParams{
776789
Order: []string{"topoaa", "rigidbody", "caprieval", "flexref", "caprieval.2", "mdref", "caprieval.3"},
777-
Topoaa: map[string]interface{}{
790+
Topoaa: map[string]any{
778791
"some-param": "some-value",
779792
},
780-
Rigidbody: map[string]interface{}{
793+
Rigidbody: map[string]any{
781794
"some-other-param": 10,
782795
"some_fname": "ambig_ti",
783796
"another_fname": "unambig",
784797
"other_fname": "custom1",
785798
"someother_fname": "custom2",
786799
"thereference_fname": "ref",
787800
},
788-
Caprieval: map[string]interface{}{},
789-
Flexref: map[string]interface{}{
801+
Caprieval: map[string]any{},
802+
Flexref: map[string]any{
790803
"some-other-param": 3.5,
791804
"array-int": []int{1, 2, 3},
792805
"array-float": []float64{1.1, 2.2, 3.3},
793806
"array-string": []string{"a", "b", "c"},
794807
"array-bool": []bool{true, false, true},
795-
"array-interface": []interface{}{1, 2.2, "three", true},
808+
"array-interface": []any{1, 2.2, "three", true},
796809
"expandable_": []int{1, 2, 3},
797810
},
798-
Caprieval_2: map[string]interface{}{},
799-
Mdref: map[string]interface{}{
811+
Caprieval_2: map[string]any{},
812+
Mdref: map[string]any{
800813
"some-other-param": false,
801814
},
802-
Caprieval_3: map[string]interface{}{},
815+
Caprieval_3: map[string]any{},
803816
},
804817
},
805818
want: "_some-workdir/run.toml",
@@ -818,7 +831,7 @@ func TestTarget_WriteRunToml(t *testing.T) {
818831
},
819832
args: args{
820833
projectDir: "_some-workdir",
821-
general: map[string]interface{}{
834+
general: map[string]any{
822835
"receptor": "receptor.pdb",
823836
"ligand": "ligand.pdb",
824837
"shape": "shape.pdb",
@@ -831,10 +844,10 @@ func TestTarget_WriteRunToml(t *testing.T) {
831844
},
832845
mod: input.ModuleParams{
833846
Order: []string{"topoaa", "rigidbody"},
834-
Topoaa: map[string]interface{}{
847+
Topoaa: map[string]any{
835848
"some-param": "some-value",
836849
},
837-
Rigidbody: map[string]interface{}{
850+
Rigidbody: map[string]any{
838851
"some-other-param": 10,
839852
"some_fname": "ambig_ti",
840853
"another_fname": "unambig",
@@ -859,7 +872,7 @@ func TestTarget_WriteRunToml(t *testing.T) {
859872
},
860873
args: args{
861874
projectDir: "unexisting-directory",
862-
general: map[string]interface{}{},
875+
general: map[string]any{},
863876
mod: input.ModuleParams{},
864877
},
865878
want: "",

0 commit comments

Comments
 (0)