Skip to content

Failed to execute FileUtils.mkdir_p #7

Open
@slide

Description

@slide

From @wilfrem on April 6, 2013 8:4

Hello.

When I executing rubygems,
I find a bug around FileUtils.mkdir_p.

OS: Ubuntu 12.10
C#: mono 3.0.7
$ ruby --version
IronRuby 1.1.3.0 on 3.0.7 (tarball Wed Apr 3 11:21:23 PDT 2013)

When call FileUtils.mkdir_p "/tmp/foo/bar" on condition "/tmp/foo" and "/tmp/foo/bar" not exists, it throws ArgumentError

$ ruby
IronRuby 1.1.3.0 on 3.0.7 (tarball Wed Apr  3 11:21:23 PDT 2013)
Copyright (c) Microsoft Corporation. All rights reserved.

>>> require "fileutils"
=> true
>>> FileUtils.mkdir_p "/tmp/foo/bar"
mscorlib:0:in `GetDirectoryName': Invalid path (ArgumentError)
    from /usr/local/ironruby/bin/../lib/ruby/1.9.1/fileutils.rb:245:in `mkdir'
    from /usr/local/ironruby/bin/../lib/ruby/1.9.1/fileutils.rb:245:in `fu_mkdir'
    from /usr/local/ironruby/bin/../lib/ruby/1.9.1/fileutils.rb:217:in `reverse_each'
    from /usr/local/ironruby/bin/../lib/ruby/1.9.1/fileutils.rb:217:in `mkdir_p'
    from /usr/local/ironruby/bin/../lib/ruby/1.9.1/fileutils.rb:215:in `each'
    from /usr/local/ironruby/bin/../lib/ruby/1.9.1/fileutils.rb:215:in `mkdir_p'
    from /usr/local/ironruby/bin/../lib/ruby/1.9.1/fileutils.rb:201:in `mkdir_p'

I found mkdir_p "/tmp/foo/bar/" call fu_mkdir "", fu_mkdir "" call Dir.mkdir "".
But Dir.mkdir "" throws ArgumentError because it calls GetDirectoryName("") (MRI Ruby throws ENOENT extends SystemCallError)

https://github.com/IronLanguages/main/blob/master/Languages/Ruby/Libraries/Builtins/Dir.cs Line:217

mkdir_p cannot rescue ArgumentError, so it fails. (mkdir_p can rescue SystemCallError, so MRI Ruby can execute it)

Copied from original issue: IronLanguages/main#112

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions