Rspec-core: Permintaan fitur: Jalankan spesifikasi dalam rentang garis

Dibuat pada 22 Des 2016  ·  6Komentar  ·  Sumber: rspec/rspec-core

Sementara fungsionalitas yang ada untuk menjalankan pengujian tertentu memenuhi sebagian besar kebutuhan saya untuk menjalankan pengujian individu atau pengujian dalam satu blok, kadang-kadang saya ingin menjalankan dua atau tiga pengujian yang berdekatan yang tidak membentuk blok itu sendiri.

Saya menyadari bahwa beberapa "lokasi" dapat ditentukan saat menjalankan CLI, jadi fungsi ini sudah dapat dicapai dengan melewatkan setiap baris dalam rentang melalui beberapa : s, misalnya rspec spec.rb:10:11:12:13:14:15 . Tetapi akan lebih baik untuk memiliki UI yang lebih halus untuk kasus penggunaan ini, mungkin sesuatu seperti rspec spec.rb --start-line 10 --end-line 15 .

Apakah pengelola akan mempertimbangkan PR yang menambahkan fitur ini?

Komentar yang paling membantu

Ini versi tetap:

RSpec.configure do |c|
  if ENV['LINE_RANGE']
    range_start, range_stop = ENV['LINE_RANGE'].split('-')
    range = Integer(range_start)..Integer(range_stop)
    c.filter_run_including line_number: lambda { |line_number| range.include?(line_number) }
  end
end

Saya belum pernah mencoba cuplikan sebelumnya (saya baru saja mengetiknya di kotak komentar github), jadi saya membuat beberapa kesalahan bodoh (seperti lupa mengubah start/stop menjadi bilangan bulat). Saya telah mengonfirmasi bahwa cuplikan ini berfungsi.

Semua 6 komentar

Masalah dengan --start-line 10 --end-line 15 adalah bahwa baris hanya bermakna dalam kaitannya dengan file tertentu. Kami dulu mendukung --line-number (selain akhiran :num ) tetapi menghapusnya karena menambahkan banyak kerumitan mengingat Anda dapat melewatkan banyak nama file...sedangkan file_name.rb:10 tidak ambigu dan jelas bahwa nomor baris hanya berlaku untuk file tertentu.

Jika kami mendukung ini, saya idealnya ingin itu hanya ada di pengurai opsi CLI, sehingga bentuk apa pun yang kami dukung ini akan diterjemahkan ke bentuk seperti 10:11:12:13:14:15 ; menambahkan lebih banyak kerumitan pada bagaimana kami melakukan penyaringan nomor baris akan menambah banyak beban pemeliharaan kami, saya pikir. Tetapi bahkan itu tidak selalu sederhana; kami telah mendukung pencocokan nomor baris "kabur" di mana kami mencocokkan setiap nomor baris yang diberikan dengan contoh atau grup terdekat pada atau di atas nomor baris, yang mungkin tidak melakukan apa yang Anda inginkan.

Saya belum mencoba ini, tetapi saya pikir Anda dapat mendukung ini melalui ENV vars dan beberapa konfigurasi sederhana:

RSpec.configure do |c|
  if ENV['LINE_RANGE']
    range_start, range_stop = ENV['LINE_RANGE'].split('-')
    range = range_start..range_stop
    c.filter_run_including line_number: lambda do |line_number|
      range.include?(number)
    end
  end
end

Dengan itu, Anda dapat menjalankan rspec seperti:

$ LINE_RANGE=10-15 rspec path/to/spec.rb

Beri tahu saya jika itu tidak berhasil untuk Anda.

Terimakasih atas tanggapan Anda!

Poin bagus, flag mungkin tidak bisa diterapkan. Bagaimana dengan ekspansi pada sintaks :num , mungkin file_name.rb:10,15 atau file_name.rb:10-15 ? Saya pikir mempertahankan pencocokan nomor baris fuzzy akan menjadi perilaku intuitif, jadi saya tidak melihat masalah di sana.

Saya mencoba kode itu tetapi tidak berhasil untuk saya; Saya menghargai sarannya dan saya akan memainkannya lagi nanti. Idenya keren, meskipun solusi yang lebih portabel akan sangat bagus, sehingga saya dapat dengan mudah menjalankan spesifikasi dalam rentang baris pada komputer bersama, komputer pasangan, dll. Juga, saya tidak akan dapat mengubah spec_helper.rb secara permanen

Anda dapat menggunakan ini sebagai dasar untuk membangun fungsionalitas ini menjadi permata ekstensi.

Secara umum, kami tidak ingin menambah luas permukaan CLI untuk fitur yang hanya diminta oleh sejumlah kecil pengguna, dan Anda adalah orang pertama yang memintanya. Menerapkan ini di RSpec dengan benar untuk semua kasus dengan cara yang berfungsi baik dengan semua fitur tidak akan sesederhana yang Anda harapkan, dan saya pikir permata ekstensi kemungkinan adalah cara untuk melakukan ini.

Apa yang tidak berhasil tentang cuplikan?

Oke, masuk akal.

Apakah cuplikan berfungsi untuk Anda? Sepertinya ada beberapa hal sintaksis, tetapi setelah mengubah kode itu masih tidak berfungsi untuk saya. Aku akan melihat lebih lama nanti. Tapi saya pikir saya hanya akan menyelesaikan ini dengan fungsi Vim, itu mungkin akan menjadi hal yang paling portabel bagi saya selain perubahan pada rspec-core itu sendiri.

Ini versi tetap:

RSpec.configure do |c|
  if ENV['LINE_RANGE']
    range_start, range_stop = ENV['LINE_RANGE'].split('-')
    range = Integer(range_start)..Integer(range_stop)
    c.filter_run_including line_number: lambda { |line_number| range.include?(line_number) }
  end
end

Saya belum pernah mencoba cuplikan sebelumnya (saya baru saja mengetiknya di kotak komentar github), jadi saya membuat beberapa kesalahan bodoh (seperti lupa mengubah start/stop menjadi bilangan bulat). Saya telah mengonfirmasi bahwa cuplikan ini berfungsi.

Keren Terimakasih.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat