Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Crystal #465

Merged
merged 4 commits into from
Jun 29, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/travis/build/script.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@

require 'travis/build/script/android'
require 'travis/build/script/c'
require 'travis/build/script/cpp'
require 'travis/build/script/clojure'
require 'travis/build/script/cpp'

This comment was marked as spam.

require 'travis/build/script/crystal'
require 'travis/build/script/csharp'
require 'travis/build/script/d'
require 'travis/build/script/dart'
Expand Down
48 changes: 48 additions & 0 deletions lib/travis/build/script/crystal.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
module Travis
module Build
class Script
class Crystal < Script

def configure
super
sh.fold 'crystal_install' do
sh.echo 'Installing Crystal', ansi: :yellow

sh.cmd %q(sudo sh -c 'apt-key adv --keyserver keys.gnupg.net --recv-keys 09617FD37CC06B54')
sh.cmd %q(sudo sh -c 'echo "deb http://dist.crystal-lang.org/apt crystal main" > /etc/apt/sources.list.d/crystal.list')
sh.cmd %q(sudo sh -c 'apt-get update')

sh.cmd %q(sudo apt-get install crystal)
end
end

def setup
super

sh.echo 'Crystal for Travis-CI is not officially supported, but is community maintained.', ansi: :green
sh.echo 'Please file any issues using the following link', ansi: :green
sh.echo ' https://github.com/travis-ci/travis-ci/issues/new?labels=community:crystal', ansi: :green
sh.echo 'and mention \`@asterite\`, \`@jhass\`, \`@waj\` and \`@will\` in the issue', ansi: :green
end

def announce
super

sh.cmd 'crystal --version'
sh.echo ''
end

def install
sh.if '-f Projectfile' do
sh.cmd "crystal deps"
end
end

def script
sh.cmd "crystal spec"
end

end
end
end
end
19 changes: 19 additions & 0 deletions spec/build/script/crystal_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
require 'spec_helper'

describe Travis::Build::Script::Crystal, :sexp do
let(:data) { payload_for(:push, :crystal) }
let(:script) { described_class.new(data) }
subject { script.sexp }

it_behaves_like 'a build script sexp'

it "announces `crystal --version`" do
should include_sexp [:cmd, "crystal --version", echo: true]
end

it "runs tests by default" do
should include_sexp [:cmd,
"crystal spec",
echo: true, timing: true]
end
end