physique 0.3.3 → 0.3.4

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.
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: ''