physique 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +8 -8
  2. data/.gitignore +205 -1
  3. data/Gemfile.lock +1 -1
  4. data/lib/physique/task_builders/fluent_migrator.rb +3 -4
  5. data/lib/physique/task_builders/test.rb +48 -8
  6. data/lib/physique/tasks/sqlcmd.rb +1 -1
  7. data/lib/physique/version.rb +1 -1
  8. data/spec/sqlcmd_spec.rb +4 -4
  9. data/spec/support/shared_contexts/rake.rb +21 -0
  10. data/spec/task_builders/build_spec.rb +25 -0
  11. data/spec/task_builders/default_spec.rb +17 -0
  12. data/spec/task_builders/nspec_spec.rb +13 -0
  13. data/spec/task_builders/nuget_spec.rb +16 -0
  14. data/spec/test_data/solutions/.nuget/NuGet.Config +6 -0
  15. data/spec/test_data/solutions/.nuget/NuGet.exe +0 -0
  16. data/spec/test_data/solutions/.nuget/NuGet.targets +144 -0
  17. data/spec/test_data/solutions/.nuget/packages.config +4 -0
  18. data/spec/test_data/solutions/basic/.semver +6 -0
  19. data/spec/test_data/solutions/basic/Basic/Basic.csproj +53 -0
  20. data/spec/test_data/solutions/basic/Basic/Class1.cs +12 -0
  21. data/spec/test_data/solutions/basic/Basic/Properties/AssemblyInfo.cs +36 -0
  22. data/spec/test_data/solutions/basic/Basic.Tests/Basic.Tests.csproj +59 -0
  23. data/spec/test_data/solutions/basic/Basic.Tests/Class1.cs +14 -0
  24. data/spec/test_data/solutions/basic/Basic.Tests/Properties/AssemblyInfo.cs +36 -0
  25. data/spec/test_data/solutions/basic/Basic.Tests/packages.config +4 -0
  26. data/spec/test_data/solutions/basic/Basic.sln +28 -0
  27. data/spec/test_data/solutions/basic/Rakefile.rb +10 -0
  28. data/spec/test_data/solutions/basic/packages.config +4 -0
  29. data/spec/test_data/solutions/nspec/.semver +6 -0
  30. data/spec/test_data/solutions/nspec/Basic/Basic.csproj +56 -0
  31. data/spec/test_data/solutions/nspec/Basic/Class1.cs +12 -0
  32. data/spec/test_data/solutions/nspec/Basic/Properties/AssemblyInfo.cs +36 -0
  33. data/spec/test_data/solutions/nspec/Basic/packages.config +3 -0
  34. data/spec/test_data/solutions/nspec/Basic.Specs/Basic.Specs.csproj +60 -0
  35. data/spec/test_data/solutions/nspec/Basic.Specs/Class1.cs +12 -0
  36. data/spec/test_data/solutions/nspec/Basic.Specs/DebuggerShim.cs +42 -0
  37. data/spec/test_data/solutions/nspec/Basic.Specs/Properties/AssemblyInfo.cs +36 -0
  38. data/spec/test_data/solutions/nspec/Basic.Specs/packages.config +4 -0
  39. data/spec/test_data/solutions/nspec/Basic.sln +28 -0
  40. data/spec/test_data/solutions/nspec/Rakefile.rb +14 -0
  41. metadata +66 -2
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjE5ZjYzNzFiMDI0NWU1NDYwYmRhNDc0OTdmM2I2ZmMzNmEzN2YxMw==
4
+ NWU4MGE4OWY1OGU2ODQyZTZlYmQ1ZjJlNzU0MzU2YTY5ZjllZGViMg==
5
5
  data.tar.gz: !binary |-
6
- MDUxMDhkZGY2NTU4NDM5OTI2ZTA3YjczZTVlM2I1ZmNjOGQzODk5NQ==
6
+ NzE1ZjQ5MmU1MjdhZmMxMDM4ODM1MWUxOWNmZDE5YzA3NWM2MzkzMw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZGVjOWMzZmE2ZDljMDNmMzM4NDMxZDcyZWQ5OGFmM2Y4ZTFmOTg4ZjZjZTQw
10
- YjllMTY3ZGExOGM4MjQ5MmZlMGZiYTY5ZDBjNzkwZTkwODgxNGI2NTg5NWU1
11
- NjU3NTZlNjczNzk3Zjg1MTEwNjJhNTg3ZmRiMDBiNWQ3MTQ0ZmI=
9
+ MDZkMWQxZTMzNGFlNjQzODgyNzI0MmI4YWU5MjVkMzQ0NmU2NTc5ZTg1MDAz
10
+ NDIzZDVlNjhlZTZmOGE5YTYxNWRkMzk1YmM2ZTk5YjMxMTEzZjM1Mzk0NDg1
11
+ MTIyMjQ3ZjUxNDRiZmZjNDVlYjY5Y2Y2YjQwZTU4ZDJlYzQ1YjM=
12
12
  data.tar.gz: !binary |-
13
- NjdiZTdhYmU3NDRhODUyZDJjN2NiNzY0OTczODQ2NTczOTRiZTQ5NmYxMzlk
14
- ZDFiZDUxMmNjMzZmZjE3Y2Y3ODg2YTZiNGEzMjAyYTdiYWE1ODVhZDc3MTg4
15
- MDZhZTA0Njc2NjdlNTRjYmZkZmUwMjBmOTRhYWQxYzZlN2Q0MjQ=
13
+ MzJiYTg2NzhhZGQxNWMyMDdiMjM3YTQ5YWZiNTFlYjcwNDRjZDMzMWJjNzQx
14
+ YzkxNTEwYjY0NWU4MjQxMjJkYWEzMWJjY2I4ZTAxMTExM2UyMDUwNzRmNDY3
15
+ OWNlZDVlNTMxYTc2NjYwYjkzYjY2MTA4NmY2NmVjZTYzZjU4N2M=
data/.gitignore CHANGED
@@ -33,4 +33,208 @@ build/
33
33
  # .ruby-gemset
34
34
 
35
35
  # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
36
- .rvmrc
36
+ .rvmrc
37
+
38
+ ## Ignore Visual Studio temporary files, build results, and
39
+ ## files generated by popular Visual Studio add-ons.
40
+
41
+ # User-specific files
42
+ *.suo
43
+ *.user
44
+ *.sln.docstates
45
+
46
+ # Build results
47
+ [Dd]ebug/
48
+ [Dd]ebugPublic/
49
+ [Rr]elease/
50
+ x64/
51
+ bld/
52
+ [Bb]in/
53
+ [Oo]bj/
54
+
55
+ # MSTest test Results
56
+ [Tt]est[Rr]esult*/
57
+ [Bb]uild[Ll]og.*
58
+
59
+ #NUNIT
60
+ *.VisualState.xml
61
+ TestResult.xml
62
+
63
+ *_i.c
64
+ *_p.c
65
+ *_i.h
66
+ *.ilk
67
+ *.meta
68
+ *.obj
69
+ *.pch
70
+ *.pdb
71
+ *.pgc
72
+ *.pgd
73
+ *.rsp
74
+ *.sbr
75
+ *.tlb
76
+ *.tli
77
+ *.tlh
78
+ *.tmp
79
+ *.tmp_proj
80
+ *.log
81
+ *.vspscc
82
+ *.vssscc
83
+ .builds
84
+ *.pidb
85
+ *.svclog
86
+ *.scc
87
+
88
+ # Chutzpah Test files
89
+ _Chutzpah*
90
+
91
+ # Visual C++ cache files
92
+ ipch/
93
+ *.aps
94
+ *.ncb
95
+ *.opensdf
96
+ *.sdf
97
+ *.cachefile
98
+
99
+ # Visual Studio profiler
100
+ *.psess
101
+ *.vsp
102
+ *.vspx
103
+
104
+ # TFS 2012 Local Workspace
105
+ $tf/
106
+
107
+ # Guidance Automation Toolkit
108
+ *.gpState
109
+
110
+ # ReSharper is a .NET coding add-in
111
+ _ReSharper*/
112
+ *.[Rr]e[Ss]harper
113
+ *.DotSettings.user
114
+
115
+ # JustCode is a .NET coding addin-in
116
+ .JustCode
117
+
118
+ # TeamCity is a build add-in
119
+ _TeamCity*
120
+
121
+ # DotCover is a Code Coverage Tool
122
+ *.dotCover
123
+
124
+ # NCrunch
125
+ *.ncrunch*
126
+ _NCrunch_*
127
+ .*crunch*.local.xml
128
+
129
+ # MightyMoose
130
+ *.mm.*
131
+ AutoTest.Net/
132
+
133
+ # Web workbench (sass)
134
+ .sass-cache/
135
+
136
+ # Installshield output folder
137
+ [Ee]xpress/
138
+
139
+ # DocProject is a documentation generator add-in
140
+ DocProject/buildhelp/
141
+ DocProject/Help/*.HxT
142
+ DocProject/Help/*.HxC
143
+ DocProject/Help/*.hhc
144
+ DocProject/Help/*.hhk
145
+ DocProject/Help/*.hhp
146
+ DocProject/Help/Html2
147
+ DocProject/Help/html
148
+
149
+ # Click-Once directory
150
+ publish/
151
+
152
+ # Publish Web Output
153
+ *.[Pp]ublish.xml
154
+ *.azurePubxml
155
+
156
+ # NuGet Packages Directory
157
+ ## TODO: If you have NuGet Package Restore enabled, uncomment the next line
158
+ packages/*
159
+ ## TODO: If the tool you use requires repositories.config, also uncomment the next line
160
+ !packages/repositories.config
161
+
162
+ # Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
163
+ # This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented)
164
+ !packages/build/
165
+
166
+ # Windows Azure Build Output
167
+ csx/
168
+ *.build.csdef
169
+
170
+ # Windows Store app package directory
171
+ AppPackages/
172
+
173
+ # Others
174
+ sql/
175
+ *.Cache
176
+ ClientBin/
177
+ [Ss]tyle[Cc]op.*
178
+ ~$*
179
+ *~
180
+ *.dbmdl
181
+ *.dbproj.schemaview
182
+ *.pfx
183
+ *.publishsettings
184
+ node_modules/
185
+
186
+ # RIA/Silverlight projects
187
+ Generated_Code/
188
+
189
+ # Backup & report files from converting an old project file to a newer
190
+ # Visual Studio version. Backup files are not needed, because we have git ;-)
191
+ _UpgradeReport_Files/
192
+ Backup*/
193
+ UpgradeLog*.XML
194
+ UpgradeLog*.htm
195
+
196
+ # SQL Server files
197
+ App_Data/*.mdf
198
+ App_Data/*.ldf
199
+
200
+ # Business Intelligence projects
201
+ *.rdl.data
202
+ *.bim.layout
203
+ *.bim_*.settings
204
+
205
+ # Microsoft Fakes
206
+ FakesAssemblies/
207
+
208
+ # =========================
209
+ # Windows detritus
210
+ # =========================
211
+
212
+ # Windows image file caches
213
+ Thumbs.db
214
+ ehthumbs.db
215
+
216
+ # Folder config file
217
+ Desktop.ini
218
+
219
+ # Recycle Bin used on file shares
220
+ $RECYCLE.BIN/
221
+
222
+ # Ignore FluentMigrator change scripts
223
+ migrate-output.sql
224
+
225
+ #Nuget packages
226
+ packages/
227
+ src/packages
228
+ .bundle/
229
+
230
+ #created files
231
+ /src/SouthFloridaVision.Web/apps/userfiles
232
+ /src/SouthFloridaVision.Web/apps/userfiles_temp
233
+
234
+ working/*
235
+ working*
236
+
237
+ src/SouthFloridaVision.userprefs
238
+
239
+ # Ignore NancyFx keyStore
240
+ keyStore/
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- physique (0.3.2)
4
+ physique (0.3.3)
5
5
  activesupport (~> 4.1)
6
6
  albacore (~> 2.3)
7
7
  map (~> 6.5)
@@ -1,5 +1,4 @@
1
- require 'active_support/core_ext/string'
2
- require 'active_support/core_ext/array'
1
+ require 'active_support/core_ext/object/blank'
3
2
  require 'physique/project'
4
3
 
5
4
  module Physique
@@ -61,7 +60,7 @@ module Physique
61
60
  namespace :db do
62
61
  namespace task_namespace do
63
62
  # First look at the scripts_dir and add a task for every sql file that you find
64
- defaults = default_tasks(db)
63
+ defaults = default_tasks(db.name)
65
64
  add_script_tasks db, defaults
66
65
 
67
66
  # Then add the default minimum required tasks in case the scripts_dir didn't contain them
@@ -238,7 +237,7 @@ namespace #{project_name}.Migrations
238
237
  {
239
238
  // Add migration rollback code here
240
239
  }
241
- }rake install
240
+ }
242
241
  }
243
242
  TEMPLATE
244
243
  end
@@ -1,3 +1,5 @@
1
+ require 'active_support/core_ext/object/blank'
2
+
1
3
  module Physique
2
4
  class TestConfig
3
5
  self.extend Albacore::ConfigDSL
@@ -8,10 +10,20 @@ module Physique
8
10
  # Path to test runner executable
9
11
  attr_writer :files
10
12
 
13
+ # The test runner to use
14
+ attr_writer :runner
15
+
16
+ # Additional parameters to pass to the test runner
17
+ attr_writer :parameters
18
+
11
19
  def opts
12
20
  Map.new({
13
21
  exe: @exe,
14
- files: @files
22
+ runner: @runner,
23
+ files: @files,
24
+ parameters: @parameters
25
+ }).apply({
26
+ runner: :nunit
15
27
  })
16
28
  end
17
29
  end
@@ -22,16 +34,44 @@ module Physique
22
34
  end
23
35
 
24
36
  def add_test_tasks
25
- configuration = solution.compile.configuration
26
- package_dir = solution.nuget.restore_location
37
+ options = solution.test
38
+ defaults = default_runner_config options
27
39
 
28
40
  desc 'Run unit tests'
29
- test_runner :test => :compile do |tests|
30
- tests.files = FileList["**/*.Tests/bin/#{configuration}/*.Tests.dll"]
31
- tests.exe = locate_tool("#{package_dir}/NUnit.Runners.*/tools/nunit-console.exe")
32
- tests.parameters.add('/labels')
33
- tests.parameters.add('/trace=Verbose')
41
+
42
+ if defaults && !defaults[:files].blank?
43
+ test_runner :test => :compile do |tests|
44
+ tests.files = options.files || defaults[:files]
45
+ tests.exe = options.exe || locate_tool(defaults[:exe])
46
+
47
+ defaults[:parameters].each do |p|
48
+ tests.parameters.add(p)
49
+ end
50
+ end
51
+ else
52
+ task :test => :compile do
53
+ puts 'No test assemblies were detected'
54
+ end
34
55
  end
35
56
  end
57
+
58
+ private
59
+
60
+ def default_runner_config(options)
61
+ configuration = solution.compile.configuration
62
+ package_dir = solution.nuget.restore_location
63
+
64
+ defaults = {
65
+ nunit: {
66
+ files: FileList["**/*.Tests/bin/#{configuration}/*.Tests.dll"],
67
+ exe: "#{package_dir}/NUnit.Runners.*/tools/nunit-console.exe",
68
+ parameters: %w(/labels /trace=Verbose)},
69
+ nspec: {
70
+ files: FileList["**/*.Specs/bin/#{configuration}/*.Specs.dll"],
71
+ exe: "#{package_dir}/nspec.*/tools/NSpecRunner.exe",
72
+ parameters: []}}
73
+
74
+ defaults[options.runner]
75
+ end
36
76
  end
37
77
  end
@@ -26,7 +26,7 @@ module Physique
26
26
  @parameters << "-S #{opts[:server_name]}"
27
27
  @parameters << "-d #{opts[:database_name]}" unless opts.blank? :database_name
28
28
  @parameters << "-i #{opts[:file]}" if opts[:source] == :file
29
- @parameters << "-Q '#{opts[:command]}'" if opts[:source] == :command
29
+ @parameters << %{-Q "#{opts[:command]}"} if opts[:source] == :command
30
30
  @parameters << '-b' unless opts[:continue_on_error]
31
31
 
32
32
  opts[:variables].each do |k, v|
@@ -1,3 +1,3 @@
1
1
  module Physique
2
- VERSION = '0.3.3'
2
+ VERSION = '0.3.4'
3
3
  end
data/spec/sqlcmd_spec.rb CHANGED
@@ -121,8 +121,8 @@ describe Physique::SqlCmd::Cmd do
121
121
  expect(@cmd.parameters).to include('-S server')
122
122
  end
123
123
 
124
- it 'should include the command in single quotes' do
125
- expect(@cmd.parameters).to include("-Q 'command'")
124
+ it 'should include the command in double quotes' do
125
+ expect(@cmd.parameters).to include('-Q "command"')
126
126
  end
127
127
  end
128
128
 
@@ -139,8 +139,8 @@ describe Physique::SqlCmd::Cmd do
139
139
  end
140
140
 
141
141
  it 'should add multiple variables to the command line' do
142
- expect(@cmd.parameters).to include("-v test_variable1=test_value1")
143
- expect(@cmd.parameters).to include("-v test_variable2=test_value2")
142
+ expect(@cmd.parameters).to include('-v test_variable1=test_value1')
143
+ expect(@cmd.parameters).to include('-v test_variable2=test_value2')
144
144
  end
145
145
  end
146
146
  end
@@ -0,0 +1,21 @@
1
+ require 'rake'
2
+
3
+ shared_context 'rake' do
4
+ let(:rake) { Rake::Application.new }
5
+ let(:solution_name) { self.class.top_level_description }
6
+ let(:solution_dir) { "spec/test_data/solutions/#{solution_name}" }
7
+ let(:task_names) { rake.tasks.map{|t| t.name } }
8
+
9
+
10
+ before do
11
+ @original_app = Rake.application
12
+ Dir.chdir(solution_dir)
13
+ Rake.application = rake
14
+ Rake.load_rakefile('Rakefile.rb')
15
+ end
16
+
17
+ after do
18
+ Rake.application = @original_app
19
+ Dir.chdir(@original_app.original_dir)
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ require 'support/shared_contexts/rake'
2
+
3
+ describe 'basic' do
4
+ include_context 'rake'
5
+
6
+ BUILD_TASKS = %w(versionizer compile compile:clean compile:build compile:rebuild)
7
+
8
+ it 'should create the build tasks' do
9
+ BUILD_TASKS.each do |name|
10
+ task_names.should include(name)
11
+ end
12
+ end
13
+
14
+ describe 'the compile task' do
15
+ let(:task) { rake['compile'] }
16
+
17
+ it 'should run without error' do
18
+ task.invoke
19
+ end
20
+
21
+ it 'should include restore as a prerequisite' do
22
+ task.prerequisites.should include('restore')
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,17 @@
1
+ require 'support/shared_contexts/rake'
2
+
3
+ describe 'basic' do
4
+ include_context 'rake'
5
+
6
+ DEFAULT_TASK = 'default'
7
+
8
+ let(:task) { rake[DEFAULT_TASK] }
9
+
10
+ it 'should create the default task' do
11
+ task_names.should include(DEFAULT_TASK)
12
+ end
13
+
14
+ it 'should run default task without error' do
15
+ task.invoke
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ require 'support/shared_contexts/rake'
2
+
3
+ describe 'nspec' do
4
+ include_context 'rake'
5
+
6
+ TASK = 'test'
7
+
8
+ let(:task) { rake[TASK] }
9
+
10
+ it 'should run the test task without error' do
11
+ task.invoke
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ require 'support/shared_contexts/rake'
2
+
3
+ describe 'basic' do
4
+ include_context 'rake'
5
+
6
+ RESTORE_TASK = 'restore'
7
+ let(:task) { rake[RESTORE_TASK] }
8
+
9
+ it 'should create the build tasks' do
10
+ task_names.should include(RESTORE_TASK)
11
+ end
12
+
13
+ it 'should run without error' do
14
+ task.invoke
15
+ end
16
+ end
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <configuration>
3
+ <solution>
4
+ <add key="disableSourceControlIntegration" value="true" />
5
+ </solution>
6
+ </configuration>
@@ -0,0 +1,144 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3
+ <PropertyGroup>
4
+ <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
5
+
6
+ <!-- Enable the restore command to run before builds -->
7
+ <RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
8
+
9
+ <!-- Property that enables building a package from a project -->
10
+ <BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
11
+
12
+ <!-- Determines if package restore consent is required to restore packages -->
13
+ <RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
14
+
15
+ <!-- Download NuGet.exe if it does not already exist -->
16
+ <DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
17
+ </PropertyGroup>
18
+
19
+ <ItemGroup Condition=" '$(PackageSources)' == '' ">
20
+ <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
21
+ <!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
22
+ <!--
23
+ <PackageSource Include="https://www.nuget.org/api/v2/" />
24
+ <PackageSource Include="https://my-nuget-source/nuget/" />
25
+ -->
26
+ </ItemGroup>
27
+
28
+ <PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
29
+ <!-- Windows specific commands -->
30
+ <NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
31
+ </PropertyGroup>
32
+
33
+ <PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
34
+ <!-- We need to launch nuget.exe with the mono command if we're not on windows -->
35
+ <NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
36
+ </PropertyGroup>
37
+
38
+ <PropertyGroup>
39
+ <PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
40
+ <PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
41
+ </PropertyGroup>
42
+
43
+ <PropertyGroup>
44
+ <PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
45
+ <PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
46
+ </PropertyGroup>
47
+
48
+ <PropertyGroup>
49
+ <!-- NuGet command -->
50
+ <NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
51
+ <PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
52
+
53
+ <NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
54
+ <NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(NuGetExePath)</NuGetCommand>
55
+
56
+ <PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
57
+
58
+ <RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
59
+ <NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
60
+
61
+ <PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
62
+ <PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
63
+
64
+ <!-- Commands -->
65
+ <RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
66
+ <BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
67
+
68
+ <!-- We need to ensure packages are restored prior to assembly resolve -->
69
+ <BuildDependsOn Condition="$(RestorePackages) == 'true'">
70
+ RestorePackages;
71
+ $(BuildDependsOn);
72
+ </BuildDependsOn>
73
+
74
+ <!-- Make the build depend on restore packages -->
75
+ <BuildDependsOn Condition="$(BuildPackage) == 'true'">
76
+ $(BuildDependsOn);
77
+ BuildPackage;
78
+ </BuildDependsOn>
79
+ </PropertyGroup>
80
+
81
+ <Target Name="CheckPrerequisites">
82
+ <!-- Raise an error if we're unable to locate nuget.exe -->
83
+ <Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
84
+ <!--
85
+ Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
86
+ This effectively acts as a lock that makes sure that the download operation will only happen once and all
87
+ parallel builds will have to wait for it to complete.
88
+ -->
89
+ <MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
90
+ </Target>
91
+
92
+ <Target Name="_DownloadNuGet">
93
+ <DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
94
+ </Target>
95
+
96
+ <Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
97
+ <Exec Command="$(RestoreCommand)"
98
+ Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
99
+
100
+ <Exec Command="$(RestoreCommand)"
101
+ LogStandardErrorAsError="true"
102
+ Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
103
+ </Target>
104
+
105
+ <Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
106
+ <Exec Command="$(BuildCommand)"
107
+ Condition=" '$(OS)' != 'Windows_NT' " />
108
+
109
+ <Exec Command="$(BuildCommand)"
110
+ LogStandardErrorAsError="true"
111
+ Condition=" '$(OS)' == 'Windows_NT' " />
112
+ </Target>
113
+
114
+ <UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
115
+ <ParameterGroup>
116
+ <OutputFilename ParameterType="System.String" Required="true" />
117
+ </ParameterGroup>
118
+ <Task>
119
+ <Reference Include="System.Core" />
120
+ <Using Namespace="System" />
121
+ <Using Namespace="System.IO" />
122
+ <Using Namespace="System.Net" />
123
+ <Using Namespace="Microsoft.Build.Framework" />
124
+ <Using Namespace="Microsoft.Build.Utilities" />
125
+ <Code Type="Fragment" Language="cs">
126
+ <![CDATA[
127
+ try {
128
+ OutputFilename = Path.GetFullPath(OutputFilename);
129
+
130
+ Log.LogMessage("Downloading latest version of NuGet.exe...");
131
+ WebClient webClient = new WebClient();
132
+ webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
133
+
134
+ return true;
135
+ }
136
+ catch (Exception ex) {
137
+ Log.LogErrorFromException(ex);
138
+ return false;
139
+ }
140
+ ]]>
141
+ </Code>
142
+ </Task>
143
+ </UsingTask>
144
+ </Project>
@@ -0,0 +1,4 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <packages>
3
+ <package id="NUnit.Runners" version="2.6.3" />
4
+ </packages>
@@ -0,0 +1,6 @@
1
+ ---
2
+ :major: 0
3
+ :minor: 0
4
+ :patch: 0
5
+ :special: ''
6
+ :metadata: ''