summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorEdward Anderson <[email protected]>2013-01-02 18:44:59 -0500
committerEdward Anderson <[email protected]>2013-01-02 18:44:59 -0500
commitcac5b8a3240bee9b669fe63bc0585d9294cd5b80 (patch)
tree2aeecbcbd518a16756b75380b888512b51056e11
parentf7eeb07abfa1c58552847b2b38787f44cd3e2d24 (diff)
downloadcaxlsx-cac5b8a3240bee9b669fe63bc0585d9294cd5b80.tar.gz
caxlsx-cac5b8a3240bee9b669fe63bc0585d9294cd5b80.zip
Don't add worksheets to the workbook when initialize fails
Creating a worksheet with an invalid name would still add it to the workbook, despite raising an exception.
-rw-r--r--lib/axlsx/workbook/worksheet/worksheet.rb2
-rw-r--r--test/workbook/worksheet/tc_worksheet.rb6
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/axlsx/workbook/worksheet/worksheet.rb b/lib/axlsx/workbook/worksheet/worksheet.rb
index 26385573..b02af18e 100644
--- a/lib/axlsx/workbook/worksheet/worksheet.rb
+++ b/lib/axlsx/workbook/worksheet/worksheet.rb
@@ -23,11 +23,11 @@ module Axlsx
# @option options [Boolean] show_gridlines indicates if gridlines should be shown for this sheet.
def initialize(wb, options={})
self.workbook = wb
- @workbook.worksheets << self
@sheet_protection = nil
initialize_page_options(options)
parse_options options
+ @workbook.worksheets << self
end
# Initalizes page margin, setup and print options
diff --git a/test/workbook/worksheet/tc_worksheet.rb b/test/workbook/worksheet/tc_worksheet.rb
index 8280aca0..b576047d 100644
--- a/test/workbook/worksheet/tc_worksheet.rb
+++ b/test/workbook/worksheet/tc_worksheet.rb
@@ -492,4 +492,10 @@ class TestWorksheet < Test::Unit::TestCase
assert_equal(true, @ws.sheet_view.show_outline_symbols)
end
+ def test_worksheet_does_not_get_added_to_workbook_on_initialize_failure
+ assert_equal(1, @wb.worksheets.size)
+ assert_raise(ArgumentError) { @wb.add_worksheet(:name => 'Sheet1') }
+ assert_equal(1, @wb.worksheets.size)
+ end
+
end