Sha256: 82bdeb8bce5141828adbf5378dec627aec29ba3eea4444dbf2ccff46173e9b14

Contents?: true

Size: 1.82 KB

Versions: 21

Compression:

Stored size: 1.82 KB

Contents

require 'net/http'

describe Nanoc::CLI::Commands::View, site: true, stdio: true do
  describe '#run' do
    def run_nanoc_cmd(cmd)
      pid = fork { Nanoc::CLI.run(cmd) }

      # Wait for server to start up
      20.times do |i|
        begin
          Net::HTTP.get('127.0.0.1', '/', 50_385)
        rescue Errno::ECONNREFUSED, Errno::ECONNRESET
          sleep(0.1 * 1.2**i)
          retry
        end
        break
      end

      yield
    ensure
      Process.kill('TERM', pid)
    end

    context 'default configuration' do
      it 'serves /index.html as /' do
        File.write('output/index.html', 'Hello there! Nanoc loves you! <3')
        run_nanoc_cmd(['view', '--port', '50385']) do
          expect(Net::HTTP.get('127.0.0.1', '/', 50_385)).to eql('Hello there! Nanoc loves you! <3')
        end
      end

      it 'does not serve /index.xhtml as /' do
        File.write('output/index.xhtml', 'Hello there! Nanoc loves you! <3')
        run_nanoc_cmd(['view', '--port', '50385']) do
          expect(Net::HTTP.get('127.0.0.1', '/', 50_385)).to eql("File not found: /\n")
        end
      end
    end

    context 'index_filenames including index.xhtml' do
      before do
        File.write('nanoc.yaml', 'index_filenames: [index.xhtml]')
      end

      it 'serves /index.xhtml as /' do
        File.write('output/index.xhtml', 'Hello there! Nanoc loves you! <3')
        run_nanoc_cmd(['view', '--port', '50385']) do
          expect(Net::HTTP.get('127.0.0.1', '/', 50_385)).to eql('Hello there! Nanoc loves you! <3')
        end
      end
    end

    it 'does not serve other files as /' do
      File.write('output/index.html666', 'Hello there! Nanoc loves you! <3')
      run_nanoc_cmd(['view', '--port', '50385']) do
        expect(Net::HTTP.get('127.0.0.1', '/', 50_385)).to eql("File not found: /\n")
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
nanoc-4.7.9 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.8 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.7 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.6 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.5 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.4 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.3 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.2 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.1 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.7.0 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.6.4 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.6.3 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.6.2 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.6.1 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.6.0 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.5.4 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.5.3 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.5.2 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.5.1 spec/nanoc/cli/commands/view_spec.rb
nanoc-4.5.0 spec/nanoc/cli/commands/view_spec.rb