Удалить папку после сценария огурца - PullRequest
0 голосов
/ 31 января 2011

У меня есть 2 сценария огурца, которые имитируют загрузку скрепки.Я хочу снова удалить эти папки после завершения сценариев.

У меня есть следующая структура папок вложений:: url => " / system /: attachment /: перечисление_id /: id /: style_: имя файла "

Скрепка автоматически удаляет папку : id /: style_: filename , но не родительскую папку.

У меня есть следующее в моем контроллере списков (1 список имеет много изображений), который прекрасно работает для удаления папки изображений с идентификатором списка, когда список удаляется.Мне нужно смоделировать то же самое в огурце после выполнения шага.

def destroy 
    @listing = Listing.find(params[:id])  

    # if destroy was a success, remove the listing image folder
    if @listing.destroy 


    end 

    require 'fileutils'
    dir = Rails.root + '/system/photos/' + @listing.id.to_s()
    FileUtils.rm_rf(dir)


    respond_to do |format| 
        format.html { redirect_to(listings_url) } 
        format.xml { head :ok } 
    end 
end 

Я мог бы а) сказать огурцу удалить имя папки: перечисление_id после выполнения сценария или б) сказать огурцу удалить листинг как последний шаг?

У меня естьпопытался добавить это в мой файл огурца env.rb:

AfterStep('@paperclip') do
      # This will only run before steps within scenarios tagged
      # with @cucumis AND @sativus.
        # delete folders that were created with paperclip during the test
        require 'fileutils'
        #@listing.id = 55
        #dir = Rails.root + '/system/photos/' + @listing.id.to_s()
        dir = Rails.root + '/system/photos/55' # NOT WORKING
        FileUtils.rm_rf(dir)
    end

Но это вызывает проблемы, потому что 1) я не знаю, как получить @ list.id из этого сценария, и 2) даже когда яЖесткий код (как указано выше) не удаляет его.

Есть мысли?

Ответы [ 3 ]

0 голосов
/ 23 февраля 2011

Уже немного старше, но так как я сам столкнулся с той же проблемой, вот что я сделал:

dir = Rails.root + 'images/'
dir.rmtree if dir.directory?

# or the short form, if you know the directory will be there
(Rails.root + 'images/').rmtree

Итак, я думаю, что проблема была в вашем '/' в начале папки.По крайней мере, для меня это не сработало.

0 голосов
/ 23 декабря 2014

Вы можете подключиться к огурцу at_exit, чтобы удалить любые папки, которые вам нравятся.Я использую прикрепленный код в features/support/uploads_cleaner.rb.

# Removes uploaded files when all scenarios for the current test process
# are finished. Ready for parallel_tests, too.

require 'fileutils'

at_exit do
  directory_name = "#{ Rails.env }#{ ENV['TEST_ENV_NUMBER'] }"
  uploads_path = Rails.root.join('public/system', directory_name)
  FileUtils.remove_dir(uploads_path) if uploads_path.directory?
end

Повторно с этой Карты Макандры .

0 голосов
/ 04 февраля 2011

Я бы оставил комментарий, но у меня не было очков (или я бы так предположил), чтобы это сделать.

На самом деле нет причин, по которым это не должно работать.Подтвердили ли вы, что FileUtils.rm_rf (dir) действительно удаляет каталог в тестовой среде?

Вы можете проверить это в «скрипте / тесте консоли».

...