@@ -428,3 +428,66 @@ func TestParseCPUsReturnZeroOnInvalidValues(t *testing.T) {
428428 resValue , _ = ParseCPUs ("1e-32" )
429429 assert .Equal (t , z1 , resValue )
430430}
431+
432+ func TestUmaskOpt (t * testing.T ) {
433+ t .Run ("type" , func (t * testing.T ) {
434+ var opt UmaskOpt
435+ assert .Equal (t , opt .Type (), "umask" )
436+ })
437+
438+ t .Run ("nil by default" , func (t * testing.T ) {
439+ var opt UmaskOpt
440+ assert .Assert (t , opt .Value () == nil )
441+ assert .Equal (t , opt .String (), "<nil>" )
442+ })
443+
444+ t .Run ("rejects empty string" , func (t * testing.T ) {
445+ var opt UmaskOpt
446+ err := opt .Set ("" )
447+ assert .Assert (t , err != nil )vvvv
448+ assert .Assert (t , opt .Value () == nil )
449+ assert .Equal (t , opt .String (), "<nil>" )
450+ })
451+
452+ t .Run ("parses zero" , func (t * testing.T ) {
453+ var opt UmaskOpt
454+ err := opt .Set ("0" )
455+ assert .NilError (t , err )
456+ assert .Equal (t , * opt .Value (), uint32 (0 ))
457+ assert .Equal (t , opt .String (), "0000" )
458+ })
459+
460+ t .Run ("parses valid octal values" , func (t * testing.T ) {
461+ var opt UmaskOpt
462+ err := opt .Set ("022" )
463+ assert .NilError (t , err )
464+ assert .Assert (t , opt .Value () != nil )
465+ assert .Equal (t , * opt .Value (), uint32 (0o22 ))
466+ assert .Equal (t , opt .String (), "0022" )
467+ })
468+
469+ t .Run ("rejects octal values with 0o prefix" , func (t * testing.T ) {
470+ var opt UmaskOpt
471+ err := opt .Set ("0o22" )
472+ assert .Assert (t , err != nil )
473+ assert .Assert (t , opt .Value () == nil )
474+ assert .Equal (t , opt .String (), "<nil>" )
475+ })
476+
477+ t .Run ("parses large octal values" , func (t * testing.T ) {
478+ var opt UmaskOpt
479+ err := opt .Set ("077777" )
480+ assert .NilError (t , err )
481+ assert .Assert (t , opt .Value () != nil )
482+ assert .Equal (t , * opt .Value (), uint32 (0o77777 ))
483+ assert .Equal (t , opt .String (), "077777" )
484+ })
485+
486+ t .Run ("rejects invalid octal values" , func (t * testing.T ) {
487+ var opt UmaskOpt
488+ err := opt .Set ("9" )
489+ assert .Assert (t , err != nil )
490+ assert .Assert (t , opt .Value () == nil )
491+ assert .Equal (t , opt .String (), "<nil>" )
492+ })
493+ }
0 commit comments