diff --git a/manifests/db.pp b/manifests/db.pp index f40e4d648..09a48f41d 100644 --- a/manifests/db.pp +++ b/manifests/db.pp @@ -76,8 +76,8 @@ # Ensure that the sql files passed are valid file paths. if $sql { $sql.each | $sqlfile | { - if $sqlfile !~ /^\/(?:[A-Za-z0-9_-]+\/?+)+(?:.[A-Za-z0-9]+)$/ { - $message = "The file '${sqlfile}' is invalid. A a valid file path is expected." + if $sqlfile !~ /^\/(?:.[.A-Za-z0-9_-]+\/?+)+(?:\.[.A-Za-z0-9]+)+$/ { + $message = "The file '${sqlfile}' is invalid. A valid file path is expected." fail($message) } } diff --git a/spec/defines/mysql_db_spec.rb b/spec/defines/mysql_db_spec.rb index edbd94151..cd96dcdd0 100644 --- a/spec/defines/mysql_db_spec.rb +++ b/spec/defines/mysql_db_spec.rb @@ -94,7 +94,7 @@ ].each do |path| it "fails when provided '#{path}' as a value to the 'sql' parameter" do params['sql'] = [path] - is_expected.to raise_error(Puppet::PreformattedError, %r{The file '#{Regexp.escape(path)}' is invalid. A a valid file path is expected.}) + is_expected.to raise_error(Puppet::PreformattedError, %r{The file '#{Regexp.escape(path)}' is invalid. A valid file path is expected.}) end end @@ -103,6 +103,11 @@ '/tmp/test.txt', '/tmp/.test', '/foo.test', + '/foo.test.txt', + '/foo/test/test-1.2.3/schema/test.sql', + '/foo/test/test-1.2.3/schema/foo.test.sql', + '/foo/foo.t1.t2.t3/foo.test-1.2.3/test.test.schema/test..app.sql', + '/foo/foo.t1.t2...t3/foo.test-1.2.3/test.test.schema/test.app.sql', ].each do |path| it "succeeds when provided '#{path}' as a value to the 'sql' parameter" do params['sql'] = [path]