@@ -428,3 +428,61 @@ 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 ("unset by default" , func (t * testing.T ) {
434+ var opt UmaskOpt
435+ assert .Assert (t , opt .Value () == nil )
436+ assert .Equal (t , opt .String (), "(unset)" )
437+ })
438+
439+ t .Run ("rejects empty string" , func (t * testing.T ) {
440+ var opt UmaskOpt
441+ err := opt .Set ("" )
442+ assert .Assert (t , err != nil )
443+ assert .Assert (t , opt .Value () == nil )
444+ assert .Equal (t , opt .String (), "(unset)" )
445+ })
446+
447+ t .Run ("parses zero" , func (t * testing.T ) {
448+ var opt UmaskOpt
449+ err := opt .Set ("0" )
450+ assert .NilError (t , err )
451+ assert .Equal (t , * opt .Value (), uint32 (0 ))
452+ assert .Equal (t , opt .String (), "0000" )
453+ })
454+
455+ t .Run ("parses valid octal values" , func (t * testing.T ) {
456+ var opt UmaskOpt
457+ err := opt .Set ("022" )
458+ assert .NilError (t , err )
459+ assert .Assert (t , opt .Value () != nil )
460+ assert .Equal (t , * opt .Value (), uint32 (0o22 ))
461+ assert .Equal (t , opt .String (), "0022" )
462+ })
463+
464+ t .Run ("rejects octal values with 0o prefix" , func (t * testing.T ) {
465+ var opt UmaskOpt
466+ err := opt .Set ("0o22" )
467+ assert .Assert (t , err != nil )
468+ assert .Assert (t , opt .Value () == nil )
469+ assert .Equal (t , opt .String (), "(unset)" )
470+ })
471+
472+ t .Run ("parses large octal values" , func (t * testing.T ) {
473+ var opt UmaskOpt
474+ err := opt .Set ("077777" )
475+ assert .NilError (t , err )
476+ assert .Assert (t , opt .Value () != nil )
477+ assert .Equal (t , * opt .Value (), uint32 (0o77777 ))
478+ assert .Equal (t , opt .String (), "077777" )
479+ })
480+
481+ t .Run ("rejects invalid octal values" , func (t * testing.T ) {
482+ var opt UmaskOpt
483+ err := opt .Set ("9" )
484+ assert .Assert (t , err != nil )
485+ assert .Assert (t , opt .Value () == nil )
486+ assert .Equal (t , opt .String (), "(unset)" )
487+ })
488+ }
0 commit comments