@@ -444,3 +444,148 @@ func createMockPAT(t *testing.T, payload string) string {
444
444
signature := "signature"
445
445
return fmt .Sprintf ("snyk_uat.12345678.%s.%s" , encodedPayload , signature )
446
446
}
447
+
448
+ func TestDefaultInputDirectory (t * testing.T ) {
449
+ defaultFunction := defaultInputDirectory ()
450
+ assert .NotNil (t , defaultFunction )
451
+
452
+ // Create a mock configuration for testing
453
+ mockConfig := configuration .New ()
454
+
455
+ tests := []struct {
456
+ name string
457
+ existingValue interface {}
458
+ expectedError bool
459
+ expectedResult interface {}
460
+ description string
461
+ }{
462
+ {
463
+ name : "nil input" ,
464
+ existingValue : nil ,
465
+ expectedError : false ,
466
+ expectedResult : nil , // Will fall back to current working directory
467
+ description : "should handle nil input gracefully and return current working directory" ,
468
+ },
469
+ {
470
+ name : "empty string" ,
471
+ existingValue : "" ,
472
+ expectedError : false ,
473
+ expectedResult : nil , // Will fall back to current working directory
474
+ description : "should handle empty string and return current working directory" ,
475
+ },
476
+ {
477
+ name : "whitespace only string" ,
478
+ existingValue : " \t \n " ,
479
+ expectedError : false ,
480
+ expectedResult : nil , // Will fall back to current working directory after trimming
481
+ description : "should handle whitespace-only string and return current working directory" ,
482
+ },
483
+ {
484
+ name : "valid absolute path" ,
485
+ existingValue : "/usr/local/bin" ,
486
+ expectedError : false ,
487
+ expectedResult : "/usr/local/bin" ,
488
+ description : "should return valid absolute path as-is" ,
489
+ },
490
+ {
491
+ name : "valid relative path" ,
492
+ existingValue : "./relative/path" ,
493
+ expectedError : false ,
494
+ expectedResult : "./relative/path" ,
495
+ description : "should return valid relative path as-is" ,
496
+ },
497
+ {
498
+ name : "path with leading/trailing whitespace" ,
499
+ existingValue : " /path/with/whitespace " ,
500
+ expectedError : false ,
501
+ expectedResult : "/path/with/whitespace" ,
502
+ description : "should trim whitespace and return clean path" ,
503
+ },
504
+ {
505
+ name : "non-string type - integer" ,
506
+ existingValue : 123 ,
507
+ expectedError : false ,
508
+ expectedResult : nil , // Will fall back to current working directory
509
+ description : "should handle non-string types gracefully and return current working directory" ,
510
+ },
511
+ {
512
+ name : "non-string type - boolean" ,
513
+ existingValue : true ,
514
+ expectedError : false ,
515
+ expectedResult : nil , // Will fall back to current working directory
516
+ description : "should handle non-string types gracefully and return current working directory" ,
517
+ },
518
+ {
519
+ name : "non-string type - slice" ,
520
+ existingValue : []string {"path1" , "path2" },
521
+ expectedError : false ,
522
+ expectedResult : nil , // Will fall back to current working directory
523
+ description : "should handle non-string types gracefully and return current working directory" ,
524
+ },
525
+ {
526
+ name : "non-string type - map" ,
527
+ existingValue : map [string ]string {"key" : "value" },
528
+ expectedError : false ,
529
+ expectedResult : nil , // Will fall back to current working directory
530
+ description : "should handle non-string types gracefully and return current working directory" ,
531
+ },
532
+ {
533
+ name : "current directory symbol" ,
534
+ existingValue : "." ,
535
+ expectedError : false ,
536
+ expectedResult : "." ,
537
+ description : "should return current directory symbol as-is" ,
538
+ },
539
+ {
540
+ name : "parent directory symbol" ,
541
+ existingValue : ".." ,
542
+ expectedError : false ,
543
+ expectedResult : ".." ,
544
+ description : "should return parent directory symbol as-is" ,
545
+ },
546
+ {
547
+ name : "home directory symbol" ,
548
+ existingValue : "~" ,
549
+ expectedError : false ,
550
+ expectedResult : "~" ,
551
+ description : "should return home directory symbol as-is" ,
552
+ },
553
+ {
554
+ name : "path with special characters" ,
555
+ existingValue : "/path/with/special-chars_123" ,
556
+ expectedError : false ,
557
+ expectedResult : "/path/with/special-chars_123" ,
558
+ description : "should handle paths with special characters" ,
559
+ },
560
+ }
561
+
562
+ for _ , tt := range tests {
563
+ t .Run (tt .name , func (t * testing.T ) {
564
+ result , err := defaultFunction (mockConfig , tt .existingValue )
565
+
566
+ // Check error expectations
567
+ if tt .expectedError {
568
+ assert .Error (t , err )
569
+ } else {
570
+ assert .NoError (t , err )
571
+ }
572
+
573
+ // Check result expectations
574
+ if tt .expectedResult != nil {
575
+ // For specific expected results, check exact match
576
+ assert .Equal (t , tt .expectedResult , result , tt .description )
577
+ } else {
578
+ // For fallback cases, just ensure we get a non-empty result
579
+ assert .NotNil (t , result , tt .description )
580
+ if str , ok := result .(string ); ok {
581
+ assert .NotEmpty (t , str , tt .description )
582
+ }
583
+ }
584
+ })
585
+ }
586
+
587
+ // Additional test to verify the function actually returns a function
588
+ t .Run ("returns callable function" , func (t * testing.T ) {
589
+ assert .IsType (t , defaultFunction , defaultFunction )
590
+ })
591
+ }
0 commit comments