laravel 0.2.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +10 -7
- data/bin/commands/config.rb +33 -0
- data/bin/commands/install.rb +32 -0
- data/bin/commands/new.rb +45 -0
- data/bin/laravel +39 -64
- data/features/S_1_new.feature +13 -13
- data/features/S_2_generate_key.feature +3 -4
- data/features/S_3_update_index.feature +3 -3
- data/features/S_4_generator.feature +5 -5
- data/features/step_definitions/laravel.rb +66 -48
- data/features/support/env.rb +1 -0
- data/features/support/laravel_helpers.rb +70 -31
- data/laravel.gemspec +1 -1
- data/lib/laravel.rb +4 -4
- data/lib/laravel/app.rb +95 -0
- data/lib/laravel/app_support.rb +282 -0
- data/lib/laravel/configuration.rb +119 -0
- data/lib/laravel/installer.rb +61 -0
- data/lib/laravel/version.rb +1 -1
- metadata +11 -9
- data/lib/laravel/create.rb +0 -121
- data/lib/laravel/helpers.rb +0 -59
- data/lib/laravel/info.rb +0 -45
- data/lib/laravel/manage.rb +0 -89
- data/repositories/.gitkeep +0 -0
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Laravel
|
1
|
+
[[#]] Laravel
|
2
2
|
|
3
3
|
A wrapper around Laravel framework for PHP.
|
4
4
|
Currently, is only capable of downloading Laravel source from
|
@@ -76,12 +76,15 @@ cached!
|
|
76
76
|
### In an existing Laravel application
|
77
77
|
|
78
78
|
# update Application Index for the application
|
79
|
-
laravel
|
80
|
-
laravel
|
79
|
+
laravel config index '' # removes application index for app in current directory
|
80
|
+
laravel config index 'home.php' --app=./new_app # update for app in specified directory
|
81
81
|
|
82
82
|
# generate a new key for the application
|
83
|
-
laravel
|
84
|
-
laravel
|
83
|
+
laravel config key # generates key for app in current directory
|
84
|
+
laravel config key --app=./new_app # generate key for app in specified directory
|
85
|
+
|
86
|
+
# download the Laravel generator by Jeffrey Way
|
87
|
+
laravel install generator --app=./new_app
|
85
88
|
|
86
89
|
### Help
|
87
90
|
|
@@ -90,9 +93,9 @@ cached!
|
|
90
93
|
## Coming Soon..
|
91
94
|
# create and customize a new Laravel application
|
92
95
|
<del>laravel new my_app --index='' # set application index to blank</del>
|
93
|
-
<del>laravel new my_app --key # generate a new key
|
96
|
+
<del>laravel new my_app --key # generate a new key</del>
|
97
|
+
<del>laravel new my_app --[no-]generator # download the Laravel Generator by Jeffrey Way</del>
|
94
98
|
laravel new my_app --database=db_my_app # create a database, defaults to app name
|
95
|
-
laravel new my_app --[no-]generator # download the Laravel Generator by Jeffrey Way
|
96
99
|
laravel new my_app --bundles=sentry,bob # install the provided bundles
|
97
100
|
|
98
101
|
## Contributing
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Laravel
|
2
|
+
# This module handles the subcommands used by this gem.
|
3
|
+
module Commands
|
4
|
+
# Handle config subcommands.
|
5
|
+
# This class inherits from thor and can be used to configure
|
6
|
+
# various options in the application/config/application.php file.
|
7
|
+
class Config < Thor
|
8
|
+
|
9
|
+
# This class-wide option specifies the application directory to use.
|
10
|
+
# By default, this is the path to the current directory.
|
11
|
+
class_option :app, :type => :string, :aliases => "-a",
|
12
|
+
:desc => "use the specified Laravel application instead of current directory"
|
13
|
+
|
14
|
+
# This task updates the Application Index for an application.
|
15
|
+
#
|
16
|
+
desc "index [NEW_INDEX]", "modify the Application Index for Laravel application"
|
17
|
+
def index(new_index)
|
18
|
+
@config = Laravel::Configuration.new(options[:app])
|
19
|
+
@config.update_index new_index
|
20
|
+
end
|
21
|
+
|
22
|
+
# This task generates a new key for our application.
|
23
|
+
#
|
24
|
+
desc "key", "generate a new key for Laravel application"
|
25
|
+
def key(value=nil)
|
26
|
+
@config = Laravel::Configuration.new(options[:app])
|
27
|
+
@config.update_key
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Laravel
|
2
|
+
# This module handles the subcommands used by this gem.
|
3
|
+
module Commands
|
4
|
+
# This class is responsible for the various installation tasks
|
5
|
+
# e.g. installing the bundles or other goodies.
|
6
|
+
class Install < Thor
|
7
|
+
|
8
|
+
# This option specifies the application directory to use.
|
9
|
+
# By default, this is the path to the current directory.
|
10
|
+
class_option :app, :type => :string, :aliases => "-a",
|
11
|
+
:desc => "use the specified Laravel application instead of current directory"
|
12
|
+
|
13
|
+
# This option specifies whether we want to forcefully install
|
14
|
+
# the resource by overwriting already existing files.
|
15
|
+
# Virtually, this is the same as reinstalling a certain resource.
|
16
|
+
class_option :force, :type => :boolean,
|
17
|
+
:desc => "force an installation - same as reinstall"
|
18
|
+
|
19
|
+
# This task downloads the Laravel Generator by Jeffrey Way and creates
|
20
|
+
# a file called 'generate.php' in the tasks folder.
|
21
|
+
#
|
22
|
+
# Once done, we can use `php artisan generate` to get an overview of the
|
23
|
+
# different actions this laravel-task can perform.
|
24
|
+
#
|
25
|
+
desc "generator", "download the Laravel Generator by Jeffrey Way"
|
26
|
+
def generator
|
27
|
+
@installer = Laravel::Installer.new(options[:app])
|
28
|
+
@installer.task_generator
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/bin/commands/new.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
module Laravel
|
2
|
+
class CLI < Thor
|
3
|
+
# This task creates a new application based on Laravel framework. By
|
4
|
+
# default, it simply copies a Laravel source to the path specified as the
|
5
|
+
# argument. However, this method is heavily customizable and allows us to
|
6
|
+
# create a ready to use Laravel application by handling tasks such as
|
7
|
+
# updating the Application Index, generating a new key, updating
|
8
|
+
# permissions on the storage/ directory, and even creating migration tables
|
9
|
+
# for us in one go.
|
10
|
+
#
|
11
|
+
# ==== Options
|
12
|
+
# +source+ :: [STRING] Specifies the source repository for downloading Laravel. This can
|
13
|
+
# either be an absolute/relative path from the current directory,
|
14
|
+
# or a URL to a git based repository we have access to. This can be
|
15
|
+
# very handy since it allows us to create new application based on a
|
16
|
+
# fork of the Laravel framework that we may have been working on.
|
17
|
+
# Furthermore, since we cache these source URLs, it speeds up future
|
18
|
+
# app creations using this method.
|
19
|
+
# +perms+ :: [BOOLEAN] By default, it updates the permissions on the storage/ directory
|
20
|
+
# The permissions update can be skipped, by passing a '--no-perms' parameter.
|
21
|
+
# +force+ :: [BOOLEAN] If we can not create an application at the specified path since it
|
22
|
+
# already exists or is not empty, passing this parameter will force us to create
|
23
|
+
# a new application, by first removing all the files inside the specified path.
|
24
|
+
# +index+ :: [STRING] If provided, updates the Application Index to this string.
|
25
|
+
# +key+ :: [BOOLEAN] If provided, generates a new key for our application.
|
26
|
+
# +generator+:: [BOOLEAN] If provided, this downloads the Laravel Generator by Jeffrey Way.
|
27
|
+
#
|
28
|
+
desc "new [MY_APP]", "create a new Laravel application"
|
29
|
+
method_option :force, :type => :boolean, :desc => "force overwrite"
|
30
|
+
method_option :source, :type => :string, :aliases => "-s", :banner => "GIT_REPO",
|
31
|
+
:desc => "use this git repository - can be a directory or a URL"
|
32
|
+
method_option :perms, :type => :boolean, :default => true,
|
33
|
+
:desc => "default | update permissions on storage/ directory"
|
34
|
+
method_option :index, :type => :string, :aliases => "-i",
|
35
|
+
:desc => "change the Application Index"
|
36
|
+
method_option :key, :type => :boolean, :aliases => "-k",
|
37
|
+
:desc => "generate a new key for this application"
|
38
|
+
method_option :generator, :type => :boolean, :aliases => "-g",
|
39
|
+
:desc => "get the Laravel generator by Jeffrey Way"
|
40
|
+
def new(app_name)
|
41
|
+
Laravel::App.new(app_name, options).create
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
data/bin/laravel
CHANGED
@@ -5,80 +5,55 @@
|
|
5
5
|
require "pathname"
|
6
6
|
bin_file = Pathname.new(__FILE__).realpath
|
7
7
|
|
8
|
-
# add
|
8
|
+
# add 'lib' and 'bin' folders to the load path.
|
9
9
|
$:.unshift File.expand_path(File.join(%w[ .. .. lib]), bin_file)
|
10
|
+
$:.unshift File.expand_path(File.join(%w[ .. .. bin]), bin_file)
|
10
11
|
|
11
12
|
require "laravel" # which indirectly requires 'thor'
|
12
13
|
|
14
|
+
# require our commands
|
15
|
+
require "commands/new"
|
16
|
+
require "commands/config"
|
17
|
+
require "commands/install"
|
18
|
+
|
13
19
|
module Laravel
|
20
|
+
# A means to create and manage applications based on the Laravel
|
21
|
+
# framework for PHP. This has a neat command-subcommand structure
|
22
|
+
# which imitates Git. This is run when we invoke Laravel over CLI.
|
14
23
|
class CLI < Thor
|
15
24
|
|
16
|
-
#
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
25
|
+
# choose a default task to run
|
26
|
+
default_task :version
|
27
|
+
|
28
|
+
# map some inputs to tasks
|
29
|
+
map "-T" => "help", "-C" => "config", "-I" => "install", "-N" => "new"
|
30
|
+
|
31
|
+
# config subcommand that manipulates app configuration
|
32
|
+
#
|
33
|
+
# +command+ :: subcommand to run.
|
34
|
+
#
|
35
|
+
desc "config [COMMAND]", "configure an existing application"
|
36
|
+
subcommand "config", Laravel::Commands::Config
|
37
|
+
|
38
|
+
# install subcommand that gets us some bundles and goodies
|
39
|
+
#
|
40
|
+
# +command+ :: subcommand to run.
|
41
|
+
#
|
42
|
+
desc "install [COMMAND]", "install bundles and other goodies"
|
43
|
+
subcommand "install", Laravel::Commands::Install
|
44
|
+
|
45
|
+
# display version information for this gem but is a hidden task,
|
46
|
+
# which means that it will not be shown in the 'help' overview.
|
47
|
+
#
|
48
|
+
# +version+ :: display current Laravel version, aliased as '-v'
|
49
|
+
#
|
50
|
+
desc "version", "displays usage information about this gem.", :hide => true
|
51
|
+
method_option :version, :type => :boolean, :aliases => "-v"
|
52
|
+
def version
|
53
|
+
puts "Laravel v#{Laravel::VERSION}"
|
23
54
|
# puts "Made possible by efforts of Laravel Community"
|
24
55
|
end
|
25
56
|
|
26
|
-
# create a new laravel application
|
27
|
-
# default => create a bare bone Laravel application
|
28
|
-
# --local => use a local directory for source
|
29
|
-
# --remote => use a remote git repository for source
|
30
|
-
# --force => overwrite target directory, if it exists
|
31
|
-
# --index => update Application Index for newly created application
|
32
|
-
# --key => generate a new key for this application
|
33
|
-
# --[no-]perms => do not update permissions on storage/ directory
|
34
|
-
desc "new [MY_APP]", "create a new Laravel application"
|
35
|
-
method_option :local, :type => :string, :aliases => "-l", :banner => "DIRECTORY",
|
36
|
-
:desc => "use laravel source from a local directory"
|
37
|
-
method_option :remote, :type => :string, :aliases => "-r", :banner => "GIT_REPO",
|
38
|
-
:desc => "use this git repository instead (useful when working with forks, e.g.)"
|
39
|
-
method_option :force, :type => :boolean, :desc => "force overwrite"
|
40
|
-
method_option :index, :type => :string, :aliases => "-i",
|
41
|
-
:desc => "change the Application Index"
|
42
|
-
method_option :key, :type => :boolean, :aliases => "-k",
|
43
|
-
:desc => "generate a new key for this application"
|
44
|
-
method_option :perms, :type => :boolean, :default => true,
|
45
|
-
:desc => "default | update permissions on storage/ directory"
|
46
|
-
method_option :generator, :type => :boolean, :aliases => "-g",
|
47
|
-
:desc => "get the Laravel generator by Jeffrey Way"
|
48
|
-
def new(app_name)
|
49
|
-
Laravel::Create::source app_name, options
|
50
|
-
end
|
51
|
-
|
52
|
-
# allow the user to modify Application Index
|
53
|
-
# --app => use the given directory instead of pwd
|
54
|
-
desc "update_index [NEW_INDEX]", "modify the Application Index for Laravel application"
|
55
|
-
method_option :app, :type => :string, :aliases => "-a",
|
56
|
-
:desc => "use the specified Laravel application instead of current directory"
|
57
|
-
def update_index(new_index)
|
58
|
-
Laravel::Manage::update_index new_index, options[:app]
|
59
|
-
end
|
60
|
-
|
61
|
-
# allow the user to generate a new key
|
62
|
-
# --app => use the given directory instead of pwd
|
63
|
-
desc "generate_key", "generate a new key for Laravel application"
|
64
|
-
method_option :app, :type => :string, :aliases => "-a",
|
65
|
-
:desc => "use the specified Laravel application instead of current directory"
|
66
|
-
def generate_key
|
67
|
-
Laravel::Manage::generate_key options[:app]
|
68
|
-
end
|
69
|
-
|
70
|
-
# allow the user to download the generator from Jeffrey Way
|
71
|
-
# --app => use the given directory instead of pwd
|
72
|
-
desc "get_generator", "download the Laravel Generator by Jeffrey Way"
|
73
|
-
method_option :app, :type => :string, :aliases => "-a",
|
74
|
-
:desc => "use the specified Laravel application instead of current directory"
|
75
|
-
def get_generator
|
76
|
-
Laravel::Manage::get_generator options[:app]
|
77
|
-
end
|
78
|
-
|
79
|
-
# choose a default task to run
|
80
|
-
default_task :info
|
81
|
-
|
82
57
|
end
|
83
58
|
end
|
84
59
|
|
data/features/S_1_new.feature
CHANGED
@@ -3,28 +3,28 @@ Feature: Create a new application based on Laravel framework for PHP
|
|
3
3
|
As a PHP developer acquinted with ruby
|
4
4
|
I want to use Laravel gem to setup Laravel framework
|
5
5
|
|
6
|
-
@requires_repository_download @very_slow @online
|
6
|
+
@requires_repository_download @very_slow @online
|
7
7
|
Scenario: create Laravel application with default settings
|
8
8
|
Given local cache does not exist for "official" repository
|
9
9
|
When I run `laravel new my_app`
|
10
10
|
Then laravel application should be ready to use in "my_app" directory
|
11
11
|
|
12
|
-
@may_require_repository_download
|
12
|
+
@may_require_repository_download
|
13
13
|
Scenario: create Laravel application in the current directory
|
14
14
|
When I run `laravel new . --force`
|
15
15
|
Then laravel application should be ready to use in "." directory
|
16
16
|
When I run `laravel new .`
|
17
17
|
Then the stdout should contain "ERROR"
|
18
18
|
|
19
|
-
@requires_repository_download @online
|
19
|
+
@requires_repository_download @online
|
20
20
|
Scenario: create Laravel application using source from a non-official repo
|
21
21
|
Given local cache does not exist for "pastes" repository
|
22
|
-
When I run `laravel new my_app --
|
22
|
+
When I run `laravel new my_app --source=http://github.com/laravel/pastes`
|
23
23
|
Then laravel application should be ready to use in "my_app" directory using "pastes" repository
|
24
24
|
|
25
25
|
@requires_repository_download @online
|
26
26
|
Scenario: create Laravel application using non-laravel repository
|
27
|
-
When I run `laravel new my_app --
|
27
|
+
When I run `laravel new my_app --source=http://github.com/github/gitignore`
|
28
28
|
Then local cache for "non_laravel" repository should not exist
|
29
29
|
And the stdout should contain "source is corrupt"
|
30
30
|
And the stdout should contain "ERROR"
|
@@ -33,13 +33,13 @@ Feature: Create a new application based on Laravel framework for PHP
|
|
33
33
|
@may_require_repository_download
|
34
34
|
Scenario: create Laravel application using repository from local cache
|
35
35
|
Given local cache exists for "pastes" repository
|
36
|
-
When I run `laravel new my_app --
|
36
|
+
When I run `laravel new my_app --source=http://github.com/laravel/pastes`
|
37
37
|
Then laravel application should be ready to use in "my_app" directory using "pastes" repository
|
38
38
|
|
39
|
-
@may_require_repository_download
|
39
|
+
@may_require_repository_download
|
40
40
|
Scenario: create Laravel application using source from a directory
|
41
41
|
Given laravel source has already been downloaded in "laravel" directory
|
42
|
-
When I run `laravel new my_app --
|
42
|
+
When I run `laravel new my_app --source=laravel`
|
43
43
|
Then laravel application should be ready to use in "my_app" directory
|
44
44
|
|
45
45
|
@may_require_repository_download
|
@@ -51,9 +51,9 @@ Feature: Create a new application based on Laravel framework for PHP
|
|
51
51
|
|
52
52
|
@may_require_repository_download
|
53
53
|
Scenario: create Laravel application with maximum customizations
|
54
|
-
When I run `laravel new -kgi 'home.php' -
|
55
|
-
Then laravel application should be ready to use in "my_app" directory
|
54
|
+
When I run `laravel new -kgi 'home.php' -s http://github.com/laravel/pastes my_app --force`
|
55
|
+
Then laravel application should be ready to use in "my_app" directory using "pastes" repository
|
56
56
|
And the stdout should contain "Creating application forcefully"
|
57
|
-
And
|
58
|
-
And
|
59
|
-
And generator
|
57
|
+
And configuration: "key" must be updated to "__something__" for "my_app" application
|
58
|
+
And configuration: "index" must be updated to "home.php" for "my_app" application
|
59
|
+
And task: "generator" should be installed as "generate.php" for "my_app" application
|
@@ -6,12 +6,11 @@ Feature: Generate a new key for Laravel application
|
|
6
6
|
@may_require_repository_download
|
7
7
|
Scenario: generate a new key for a Laravel application
|
8
8
|
Given laravel application exists in "my_app" directory
|
9
|
-
|
10
|
-
|
11
|
-
Then application key must be set for "my_app" application
|
9
|
+
When I run `laravel config key --app=my_app`
|
10
|
+
Then configuration: "key" must be updated to "__something__" for "my_app" application
|
12
11
|
|
13
12
|
@may_require_repository_download
|
14
13
|
Scenario: create Laravel application and generate a key for it
|
15
14
|
When I run `laravel new my_app --key`
|
16
15
|
Then laravel application should be ready to use in "my_app" directory
|
17
|
-
And
|
16
|
+
And configuration: "key" must be updated to "__something__" for "my_app" application
|
@@ -6,11 +6,11 @@ Feature: Update Application Index for a Laravel based application
|
|
6
6
|
@may_require_repository_download
|
7
7
|
Scenario: update Application Index in a Laravel application
|
8
8
|
Given laravel application exists in "my_app" directory
|
9
|
-
When I run `laravel
|
10
|
-
Then
|
9
|
+
When I run `laravel config index 'home.php' --app=my_app`
|
10
|
+
Then configuration: "index" must be updated to "home.php" for "my_app" application
|
11
11
|
|
12
12
|
@may_require_repository_download
|
13
13
|
Scenario: create Laravel application without an Application Index
|
14
14
|
When I run `laravel new my_app --index=''`
|
15
15
|
Then laravel application should be ready to use in "my_app" directory
|
16
|
-
And
|
16
|
+
And configuration: "index" must be updated to "" for "my_app" application
|
@@ -3,14 +3,14 @@ Feature: Download Laravel Generator by Jeffrey Way
|
|
3
3
|
As a PHP developer acquinted with ruby
|
4
4
|
I want to use Laravel gem to download Laravel Generator by Jeffrey Way
|
5
5
|
|
6
|
-
@may_require_repository_download
|
6
|
+
@may_require_repository_download
|
7
7
|
Scenario: download Laravel generator
|
8
8
|
Given laravel application exists in "my_app" directory
|
9
|
-
When I run `laravel
|
10
|
-
Then generator
|
9
|
+
When I run `laravel install generator --app=my_app`
|
10
|
+
Then task: "generator" should be installed as "generate.php" for "my_app" application
|
11
11
|
|
12
|
-
@may_require_repository_download
|
12
|
+
@may_require_repository_download
|
13
13
|
Scenario: download Laravel generator while creating an application
|
14
14
|
When I run `laravel new my_app --generator`
|
15
15
|
Then laravel application should be ready to use in "my_app" directory
|
16
|
-
And
|
16
|
+
And task: "generator" should be installed as "generate.php" for "my_app" application
|
@@ -5,35 +5,50 @@ module Laravel
|
|
5
5
|
end
|
6
6
|
|
7
7
|
#### GIVEN ####
|
8
|
-
|
8
|
+
|
9
|
+
# This test setups a given condition where the local cache may or may not exist
|
10
|
+
# for a given source repository. It does so by removing the cache directory, and
|
11
|
+
# then recreating it, if not negated, by downloading the repository from github.
|
12
|
+
#
|
9
13
|
Given /^local cache( does not)? exists? for "(.*?)" repository$/ do |negation, repo|
|
10
|
-
|
11
|
-
|
14
|
+
@app_tester = Laravel::AppTests.new(nil, repo)
|
15
|
+
|
12
16
|
if negation
|
13
|
-
FileUtils.rm_rf
|
14
|
-
|
17
|
+
FileUtils.rm_rf @app_tester.app.cache
|
18
|
+
elsif not @app_tester.app.has_cache?
|
15
19
|
# easiest method to ensure local cache exists is to clone repo from github
|
16
|
-
|
17
|
-
|
18
|
-
`git clone #{repo_url} #{repo_path} &>/dev/null`
|
19
|
-
end
|
20
|
+
FileUtils.rm_rf @app_tester.app.cache
|
21
|
+
`git clone #{@app_tester.app.source} #{@app_tester.app.cache} &>/dev/null`
|
20
22
|
end
|
21
23
|
end
|
22
24
|
|
23
|
-
#
|
25
|
+
# This test setups a given condition where the Laravel application exists in a
|
26
|
+
# given directory. It does so by removing the directory if it exists and then,
|
27
|
+
# creating a new Laravel application there.
|
28
|
+
#
|
24
29
|
Given /^laravel application exists in "(.*?)" directory$/ do |dir|
|
25
|
-
dir
|
26
|
-
|
30
|
+
FileUtils.rm_rf(dir) if File.directory?(dir)
|
31
|
+
@app_tester = Laravel::AppTests.new(dir)
|
32
|
+
@app_tester.app.merge_options(:force => true, :quiet => true)
|
33
|
+
@app_tester.app.create unless @app_tester.app.has_laravel?
|
27
34
|
end
|
28
35
|
|
29
|
-
#
|
36
|
+
# This test setups a given condition where the Laravel framework source has
|
37
|
+
# been download in a given directory, which is essentially the same as testing
|
38
|
+
# whether a Laravel application existing in a given directory.
|
39
|
+
#
|
30
40
|
Given /^laravel source has already been downloaded in "(.*?)" directory$/ do |dir|
|
31
41
|
# creating laravel in directory is virtually same as it being downloaded there
|
32
42
|
step "laravel application exists in \"#{dir}\" directory"
|
33
43
|
end
|
34
44
|
|
35
45
|
#### THEN ####
|
36
|
-
|
46
|
+
|
47
|
+
# This test checks whether the Laravel application we created is ready to use in
|
48
|
+
# a given directory, which is to say whether we can readily use Laravel after
|
49
|
+
# the command 'new' has been issued. This test assumes that the source repository
|
50
|
+
# is the official Laravel repository.
|
51
|
+
#
|
37
52
|
Then /^laravel application should be ready to use in "(.*?)" directory$/ do |dir|
|
38
53
|
step "local cache for \"official\" repository should exist"
|
39
54
|
step "the stdout should contain \"Hurray!\""
|
@@ -41,7 +56,10 @@ Then /^laravel application should be ready to use in "(.*?)" directory$/ do |dir
|
|
41
56
|
step "permissions should be updated on \"#{dir}/storage\" directory"
|
42
57
|
end
|
43
58
|
|
44
|
-
#
|
59
|
+
# This test checks whether the Laravel application we created is ready to use
|
60
|
+
# in a given directory using a given source repository, which is to say whether
|
61
|
+
# we can readily use Laravel after the command 'new' has been issued.
|
62
|
+
#
|
45
63
|
Then /^laravel application should be ready to use in "(.*?)" directory using "(.*?)" repository$/ do |dir, repo|
|
46
64
|
step "local cache for \"#{repo}\" repository should exist"
|
47
65
|
step "the stdout should contain \"Hurray!\""
|
@@ -49,50 +67,50 @@ Then /^laravel application should be ready to use in "(.*?)" directory using "(.
|
|
49
67
|
step "permissions should be updated on \"#{dir}/storage\" directory"
|
50
68
|
end
|
51
69
|
|
52
|
-
#
|
70
|
+
# This test checks whether the local cache exists for a given repository. It
|
71
|
+
# does so by calling the 'has_cache?' method on the application.
|
72
|
+
#
|
53
73
|
Then /^local cache for "(.*?)" repository should( not)? exist$/ do |repo, negation|
|
54
|
-
|
55
|
-
|
74
|
+
@app_tester = Laravel::AppTests.new(nil, repo)
|
75
|
+
@app_tester.raise_error?(@app_tester.app.has_cache?, negation)
|
56
76
|
end
|
57
77
|
|
58
|
-
#
|
78
|
+
# This test checks if a Laravel application exists (or was created) in the given
|
79
|
+
# directory. It does so by calling the 'has_laravel?' method on the application.
|
80
|
+
#
|
59
81
|
Then /^laravel application must( not)? exist in "(.*?)" directory$/ do |negation, dir|
|
60
|
-
|
61
|
-
|
82
|
+
@app_tester = Laravel::AppTests.new(dir)
|
83
|
+
@app_tester.raise_error?(@app_tester.app.has_laravel?, negation)
|
62
84
|
end
|
63
85
|
|
64
|
-
#
|
86
|
+
# This test checks if valid permissions were set on the "storage/" directory
|
87
|
+
# This test checks if the valid permissions were set on the "storage/" directory
|
88
|
+
# of the application.
|
89
|
+
#
|
65
90
|
Then /^permissions should( not)? be updated on "(.*?)" directory$/ do |negation, dir|
|
91
|
+
@app_tester = Laravel::AppTests.new(dir)
|
66
92
|
step "the stdout should contain \"Updated permissions\"" unless negation
|
67
|
-
|
68
|
-
world_bit = sprintf("%o", File.stat(dir).mode).to_s[-1,1].to_i
|
93
|
+
world_bit = sprintf("%o", File.stat(@app_tester.app_dir).mode).to_s[-1,1].to_i
|
69
94
|
is_world_writable = [2,3,6,7].include?(world_bit)
|
70
|
-
|
95
|
+
@app_tester.raise_error?(is_world_writable, negation)
|
71
96
|
end
|
72
97
|
|
73
|
-
#
|
74
|
-
|
75
|
-
|
76
|
-
|
98
|
+
# This test checks if the given configuration setting has been updated to a given
|
99
|
+
# value for the specified application.
|
100
|
+
#
|
101
|
+
Then /^configuration: "(.*?)" must be updated to "(.*?)" for "(.*?)" application$/ do |config, value, app_dir|
|
102
|
+
value = '.*' if value == "__something__"
|
103
|
+
@app_tester = Laravel::AppTests.new(app_dir)
|
104
|
+
@app_tester.validate_configuration("'#{config}' => '#{value}'")
|
105
|
+
step "the stdout should contain \"Updated configuration: #{config}\""
|
77
106
|
end
|
78
107
|
|
79
|
-
#
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
Then /^generator tasks should be setup for "(.*?)" application$/ do |dir|
|
88
|
-
step "the stdout should contain \"Downloaded Laravel Generator by Jeffrey Way\""
|
89
|
-
dir = get_relative_path_to_test_directory(dir)
|
90
|
-
generator_tasks_file = File.join(dir, %w[ application tasks generate.php])
|
91
|
-
raise_error_based_on_condition(File.exists?(generator_tasks_file))
|
92
|
-
unless `which php`.empty?
|
93
|
-
artisan = File.join(dir, "artisan")
|
94
|
-
step "I run `php #{artisan} generate`"
|
95
|
-
step "the stdout should contain \"generate\""
|
96
|
-
step "the stdout should not contain \"Sorry\""
|
97
|
-
end
|
108
|
+
# This test checks if the given resource has been installed in the specified
|
109
|
+
# application.
|
110
|
+
#
|
111
|
+
Then /^(.*?): "(.*?)" should be installed (?:as|in) "(.*?)" for "(.*?)" application$/ do |type, name, filename, app_dir|
|
112
|
+
@app_tester = Laravel::AppTests.new(app_dir)
|
113
|
+
filepath = @app_tester.app.tasks_file(filename) if type == "task"
|
114
|
+
@app_tester.raise_error?(File.exists?(filepath))
|
115
|
+
step "the stdout should contain \"Installed #{type}: #{name.capitalize}\""
|
98
116
|
end
|