Closed halostatue closed 9 years ago
Not sure if this is the right place to put this, but I see a bunch of failures on Windows 7 with Ruby 1.9.x:
c:\Users\djberge\Repositories\minitar>rake test rake/gempackagetask is deprecated. Use rubygems/package_task instead Loaded suite Unnamed TestSuite Started .F =============================================================================== Failure: <16877> expected but was <4516>. test_each_works(TC_Tar__Input) tests/tc_tar.rb:509:in `block (4 levels) in test_each_works' 506: assert_kind_of(Reader::EntryStream, entry2) 507: assert_equal(TEST_DATA_CONTENTS[jj][0], entry2.name) 508: assert_equal(TEST_DATA_CONTENTS[jj][1], entry2.size) => 509: assert_equal(TEST_DATA_CONTENTS[jj][2], entry2.mode) 510: assert_equal(FILETIMES, entry2.mtime) 511: end 512: assert_equal(3, jj) c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:679:in `block in each' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:614:in `block in each_entry' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:605:in `loop' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:605:in `each_entry' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:587:in `each' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:679:in `each' tests/tc_tar.rb:505:in `each_with_index' tests/tc_tar.rb:505:in `block (3 levels) in test_each_works' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:655:in `open' tests/tc_tar.rb:503:in `block (2 levels) in test_each_works' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:679:in `block in each' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:614:in `block in each_entry' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:605:in `loop' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:605:in `each_entry' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:587:in `each' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:679:in `each' tests/tc_tar.rb:494:in `each_with_index' tests/tc_tar.rb:494:in `block in test_each_works' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:655:in `open' tests/tc_tar.rb:492:in `test_each_works' =============================================================================== F =============================================================================== Failure: <1> expected but was <0>. test_extract_entry_works(TC_Tar__Input) tests/tc_tar.rb:561:in `block in test_extract_entry_works' 558: end 559: end 560: end => 561: assert_equal(1, ii) 562: end 563: end 564: end c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:655:in `open' tests/tc_tar.rb:522:in `test_extract_entry_works' =============================================================================== E =============================================================================== Error: test_eof_works(TC_Tar__Reader) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:420:in `test_eof_works' =============================================================================== E =============================================================================== Error: test_multiple_entries(TC_Tar__Reader) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:319:in `test_multiple_entries' =============================================================================== E =============================================================================== Error: test_read_works(TC_Tar__Reader) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:386:in `test_read_works' =============================================================================== E =============================================================================== Error: test_rewind_entry_works(TC_Tar__Reader) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:352:in `test_rewind_entry_works' =============================================================================== E =============================================================================== Error: test_rewind_works(TC_Tar__Reader) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:368:in `test_rewind_works' =============================================================================== E =============================================================================== Error: test_add_file(TC_Tar__Writer) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:245:in `test_add_file' =============================================================================== E =============================================================================== Error: test_add_file_simple(TC_Tar__Writer) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:183:in `test_add_file_simple' =============================================================================== .E =============================================================================== Error: test_file_name_is_split_correctly(TC_Tar__Writer) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:212:in `block in test_file_name_is_split_correctly' tests/tc_tar.rb:211:in `each' tests/tc_tar.rb:211:in `each_with_index' tests/tc_tar.rb:211:in `test_file_name_is_split_correctly' =============================================================================== ..E =============================================================================== Error: test_write_header(TC_Tar__Writer) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:274:in `test_write_header' =============================================================================== ..E =============================================================================== Error: test_basic_headers(TC_Tar__Header) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:103:in `test_basic_headers' =============================================================================== E =============================================================================== Error: test_long_name_works(TC_Tar__Header) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:112:in `test_long_name_works' =============================================================================== E =============================================================================== Error: test_new_from_stream(TC_Tar__Header) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:120:in `test_new_from_stream' =============================================================================== E =============================================================================== Error: test_new_from_stream_with_evil_name(TC_Tar__Header) TypeError: can't convert String into Integer tests/tc_tar.rb:53:in `pack' 50: ASCIIZ("", 32), Z(to_oct(nil, 7)), Z(to_oct(nil, 7)), 51: ASCIIZ(dname, 155) ] 52: arr = arr.join("").split(//).map{ |x| x[0] } => 53: h = arr.pack("C100C8C8C8C12C12C8CC100C6C2C32C32C8C8C155") 54: ret = h + "\0" * (512 - h.size) 55: assert_equal(512, ret.size) 56: ret tests/tc_tar.rb:53:in `header' tests/tc_tar.rb:34:in `tar_file_header' tests/tc_tar.rb:132:in `test_new_from_stream_with_evil_name' =============================================================================== Finished in 0.312415 seconds. 21 tests, 35 assertions, 2 failures, 13 errors, 0 pendings, 0 omissions, 0 notifications 28.5714% passed 67.22 tests/s, 112.03 assertions/s
This sounds like the right place. I haven't looked at this to see if the proposed patches fix the problem.
Actually, the main problem there is a 1.8 vs 1.9 issue:
- arr = arr.join("").split(//).map{ |x| x[0] } + if RUBY_VERSION.to_f >= 1.9 + arr = arr.join("").split(//).map{ |x| x[0].ord } + else + arr = arr.join("").split(//).map{ |x| x[0] } + end
With that change in place it's down to 2 failures on Windows (with your diff above applied):
c:\Users\djberge\Repositories\minitar\tests>rake (in c:/Users/djberge/Repositories/minitar) rake/gempackagetask is deprecated. Use rubygems/package_task instead Loaded suite Unnamed TestSuite Started F =============================================================================== Failure: 3 expected but was 0. test_each_works(TC_Tar__Input) tests/tc_tar.rb:515:in `block (3 levels) in test_each_works' 512: assert_equal(TEST_DATA_CONTENTS[jj][2], entry2.mode) 513: assert_equal(FILETIMES, entry2.mtime) 514: end => 515: assert_equal(3, jj) 516: end 517: end 518: end c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:655:in `open' tests/tc_tar.rb:506:in `block (2 levels) in test_each_works' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:679:in `block in each' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:614:in `block in each_entry' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:605:in `loop' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:605:in `each_entry' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:587:in `each' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:679:in `each' tests/tc_tar.rb:497:in `each_with_index' tests/tc_tar.rb:497:in `block in test_each_works' c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:655:in `open' tests/tc_tar.rb:495:in `test_each_works' =============================================================================== F =============================================================================== Failure: 1 expected but was 0. test_extract_entry_works(TC_Tar__Input) tests/tc_tar.rb:564:in `block in test_extract_entry_works' 561: end 562: end 563: end => 564: assert_equal(1, ii) 565: end 566: end 567: end c:/Users/djberge/Repositories/minitar/lib/archive/tar/minitar.rb:655:in `open' tests/tc_tar.rb:525:in `test_extract_entry_works' =============================================================================== ................... Finished in 0.333019 seconds. 21 tests, 369 assertions, 2 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications 90.4762% passed
I hope to look at this issue this summer; I don't foresee being able to do it before then because of other commitments. A pull request with both items patched I can probably apply fairly quickly, but I can't really investigate the issue at this point.
I believe that all of these are fixed with a01d113.
Matthew Kent (http://rubyforge.org/users/mattkent)
Doing some testing on Fedora 12 with archive-tar-minitar and noted a few issues running the test suite. I'm guessing it was developed on a Windows machine? I believe this may have led to some issues with the permission related tests.
I'm enclosing my proposed changes that work on Fedora 12, untested on Windows.