rake-delphi 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. data/Gemfile +4 -0
  2. data/Gemfile.lock +19 -0
  3. data/Rakefile.rb +6 -0
  4. data/lib/rake/common/git.rb +3 -2
  5. data/lib/rake/common/logger.rb +26 -0
  6. data/lib/rake/common/sendmailtask.rb +1 -1
  7. data/lib/rake/common/ziptask.rb +3 -3
  8. data/lib/rake/delphi.rb +1 -0
  9. data/lib/rake/delphi/dcc32.rb +63 -13
  10. data/lib/rake/delphi/envvariables.rb +41 -13
  11. data/lib/rake/delphi/project.rb +0 -1
  12. data/lib/rake/delphi/projectinfo.rb +28 -7
  13. data/lib/rake/delphi/resources.rb +3 -2
  14. data/lib/rake/delphi/tool.rb +45 -13
  15. data/lib/rake/delphi/version.rb +1 -1
  16. data/lib/rake/helpers/filelist.rb +1 -0
  17. data/lib/rake/helpers/logger.rb +1 -0
  18. data/lib/rake/helpers/rake.rb +1 -0
  19. data/lib/rake/helpers/raketask.rb +1 -2
  20. data/rake-delphi.gemspec +2 -1
  21. data/test/helpers/verinfo.rb +42 -0
  22. data/test/resources/testproject/Rakefile.rb +5 -2
  23. data/test/resources/testproject/bin/test_compile/testproject.exe +0 -0
  24. data/test/resources/testproject/bin/test_compile_alter_cfg/testproject.exe +0 -0
  25. data/test/resources/testproject/bin/test_compile_consts/testproject.exe +0 -0
  26. data/test/resources/testproject/bin/test_compile_debug_info/testproject.drc +366 -0
  27. data/test/resources/testproject/bin/test_compile_debug_info/testproject.exe +0 -0
  28. data/test/resources/testproject/bin/test_compile_debug_info/testproject.map +1798 -0
  29. data/test/resources/testproject/bin/test_compile_defines/testproject.exe +0 -0
  30. data/test/resources/testproject/bin/test_compile_use_absent_config/testproject.exe +0 -0
  31. data/test/resources/testproject/bin/test_compile_use_config/testproject.exe +0 -0
  32. data/test/resources/testproject/bin/test_compile_use_library_path/testproject.exe +0 -0
  33. data/test/resources/testproject/bin/test_compile_with_explicit_and_implicit_libs/testproject.exe +0 -0
  34. data/test/resources/testproject/bin/test_compile_with_explicit_libs/testproject.exe +0 -0
  35. data/test/resources/testproject/bin/test_compile_with_libs/testproject.exe +0 -0
  36. data/test/resources/testproject/bin/test_compile_with_resources/testproject.exe +0 -0
  37. data/test/resources/testproject/bin/test_compile_with_resources_and_libs/testproject.exe +0 -0
  38. data/test/resources/testproject/dcu/ExplicitLibUnit.dcu +0 -0
  39. data/test/resources/testproject/dcu/LibUnit.dcu +0 -0
  40. data/test/resources/testproject/resources.res +0 -0
  41. data/test/resources/testproject/{testproject.bdsproj → testproject.2006.bdsproj} +0 -0
  42. data/test/resources/testproject/{testproject.dproj → testproject.2007.dproj} +0 -0
  43. data/test/resources/testproject/testproject.2010.dproj +108 -0
  44. data/test/resources/testproject/testproject.cfg.1 +8 -0
  45. data/test/resources/testproject/testproject.dproj.2007 +77 -0
  46. data/test/resources/testproject/testproject.drc +210 -0
  47. data/test/resources/testproject/testproject.exe +0 -0
  48. data/test/resources/testproject/testproject.identcache +0 -0
  49. data/test/resources/testproject/testproject.rc +60 -0
  50. data/test/resources/testproject/testproject.res +0 -0
  51. data/test/resources/testproject/testproject.xe5.dproj +179 -0
  52. data/test/test-delphi.rb +33 -5
  53. data/test/test-envvariables.rb +23 -0
  54. data/test/test-git.rb +2 -2
  55. data/test/test-hashes.rb +0 -1
  56. data/test/test-projectinfo.rb +89 -9
  57. data/test/test-zip.rb +0 -8
  58. metadata +100 -43
  59. data/.gitignore +0 -17
  60. data/test/resources/testproject/.gitignore +0 -8
@@ -0,0 +1,179 @@
1
+ <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
2
+ <PropertyGroup>
3
+ <ProjectGuid>{A045E9FA-AB18-4219-936D-16A329020CB9}</ProjectGuid>
4
+ <ProjectVersion>15.1</ProjectVersion>
5
+ <FrameworkType>None</FrameworkType>
6
+ <MainSource>Project1.dpr</MainSource>
7
+ <Base>True</Base>
8
+ <Config Condition="'$(Config)'==''">Debug</Config>
9
+ <Platform Condition="'$(Platform)'==''">Win32</Platform>
10
+ <TargetedPlatforms>1</TargetedPlatforms>
11
+ <AppType>Console</AppType>
12
+ </PropertyGroup>
13
+ <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
14
+ <Base>true</Base>
15
+ </PropertyGroup>
16
+ <PropertyGroup Condition="('$(Platform)'=='Android' and '$(Base)'=='true') or '$(Base_Android)'!=''">
17
+ <Base_Android>true</Base_Android>
18
+ <CfgParent>Base</CfgParent>
19
+ <Base>true</Base>
20
+ </PropertyGroup>
21
+ <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
22
+ <Base_Win32>true</Base_Win32>
23
+ <CfgParent>Base</CfgParent>
24
+ <Base>true</Base>
25
+ </PropertyGroup>
26
+ <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
27
+ <Base_Win64>true</Base_Win64>
28
+ <CfgParent>Base</CfgParent>
29
+ <Base>true</Base>
30
+ </PropertyGroup>
31
+ <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
32
+ <Cfg_1>true</Cfg_1>
33
+ <CfgParent>Base</CfgParent>
34
+ <Base>true</Base>
35
+ </PropertyGroup>
36
+ <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
37
+ <Cfg_1_Win32>true</Cfg_1_Win32>
38
+ <CfgParent>Cfg_1</CfgParent>
39
+ <Cfg_1>true</Cfg_1>
40
+ <Base>true</Base>
41
+ </PropertyGroup>
42
+ <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
43
+ <Cfg_2>true</Cfg_2>
44
+ <CfgParent>Base</CfgParent>
45
+ <Base>true</Base>
46
+ </PropertyGroup>
47
+ <PropertyGroup Condition="'$(Base)'!=''">
48
+ <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
49
+ <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
50
+ <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
51
+ <DCC_E>false</DCC_E>
52
+ <DCC_N>false</DCC_N>
53
+ <DCC_S>false</DCC_S>
54
+ <DCC_F>false</DCC_F>
55
+ <DCC_K>false</DCC_K>
56
+ </PropertyGroup>
57
+ <PropertyGroup Condition="'$(Base_Android)'!=''">
58
+ <DCC_UsePackage>FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapProviderClient;xmlrtl;ibxpress;DbxCommonDriver;IndyProtocols;dbxcds;FireDACCommonDriver;bindengine;soaprtl;bindcompdbx;FMXTee;fmxFireDAC;CustomIPTransport;FireDAC;dsnap;IndyCore;FireDACDataSnapDriver;IndyIPCommon;CloudService;FireDACIBDriver;inet;FireDACDBXDriver;FmxTeeUI;RESTComponents;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
59
+ <Android_LauncherIcon72>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png</Android_LauncherIcon72>
60
+ <Android_LauncherIcon36>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png</Android_LauncherIcon36>
61
+ <Android_LauncherIcon144>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png</Android_LauncherIcon144>
62
+ <Android_LauncherIcon48>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png</Android_LauncherIcon48>
63
+ <Android_LauncherIcon96>$(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png</Android_LauncherIcon96>
64
+ </PropertyGroup>
65
+ <PropertyGroup Condition="'$(Base_Win32)'!=''">
66
+ <VerInfo_Locale>1033</VerInfo_Locale>
67
+ <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
68
+ <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
69
+ <DCC_UsePackage>DataSnapIndy10ServerTransport;FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;vcldbx;FireDACPgDriver;FireDACODBCDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;inetdb;TeeDB;vclib;inetdbbde;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DBXOdbcDriver;DataSnapServer;Tee;vclFireDAC;DataSnapProviderClient;xmlrtl;svnui;ibxpress;DbxCommonDriver;DBXSybaseASEDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;DatasnapConnectorsFreePascal;FireDACCommonDriver;MetropolisUILiveTile;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;FMXTee;TeeUI;vclie;fmxFireDAC;FireDACADSDriver;vcltouch;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;vclribbon;VclSmp;FireDACMSSQLDriver;FireDAC;dsnap;Intraweb;fmxase;vcl;IndyCore;FireDACDataSnapDriver;IndyIPServer;IndyIPCommon;VCLRESTComponents;CloudService;dsnapcon;FireDACIBDriver;DBXFirebirdDriver;inet;DBXMSSQLDriver;fmxobj;FireDACDBXDriver;DBXInformixDriver;DataSnapConnectors;FireDACMySQLDriver;FmxTeeUI;vclx;CodeSiteExpressPkg;inetdbxpress;svn;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;FireDACDb2Driver;RESTComponents;bdertl;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
70
+ <DCC_ConsoleTarget>true</DCC_ConsoleTarget>
71
+ </PropertyGroup>
72
+ <PropertyGroup Condition="'$(Base_Win64)'!=''">
73
+ <DCC_ConsoleTarget>true</DCC_ConsoleTarget>
74
+ <DCC_UsePackage>DataSnapIndy10ServerTransport;FireDACASADriver;FireDACSqliteDriver;bindcompfmx;DBXSqliteDriver;FireDACPgDriver;FireDACODBCDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;FireDACCommon;bindcomp;inetdb;TeeDB;vclib;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DBXOdbcDriver;DataSnapServer;Tee;vclFireDAC;DataSnapProviderClient;xmlrtl;ibxpress;DbxCommonDriver;DBXSybaseASEDriver;vclimg;IndyProtocols;dbxcds;DBXMySQLDriver;DatasnapConnectorsFreePascal;FireDACCommonDriver;MetropolisUILiveTile;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;FMXTee;TeeUI;vclie;fmxFireDAC;FireDACADSDriver;vcltouch;DBXDb2Driver;DBXOracleDriver;CustomIPTransport;vclribbon;VclSmp;FireDACMSSQLDriver;FireDAC;dsnap;Intraweb;fmxase;vcl;IndyCore;FireDACDataSnapDriver;IndyIPServer;IndyIPCommon;VCLRESTComponents;CloudService;dsnapcon;FireDACIBDriver;DBXFirebirdDriver;inet;DBXMSSQLDriver;fmxobj;FireDACDBXDriver;DBXInformixDriver;DataSnapConnectors;FireDACMySQLDriver;FmxTeeUI;vclx;inetdbxpress;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;FireDACDb2Driver;RESTComponents;FireDACMSAccDriver;adortl;dbexpress;IndyIPClient;$(DCC_UsePackage)</DCC_UsePackage>
75
+ </PropertyGroup>
76
+ <PropertyGroup Condition="'$(Cfg_1)'!=''">
77
+ <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
78
+ <DCC_DebugDCUs>true</DCC_DebugDCUs>
79
+ <DCC_Optimize>false</DCC_Optimize>
80
+ <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
81
+ <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
82
+ <DCC_RemoteDebug>true</DCC_RemoteDebug>
83
+ </PropertyGroup>
84
+ <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
85
+ <DCC_RemoteDebug>false</DCC_RemoteDebug>
86
+ </PropertyGroup>
87
+ <PropertyGroup Condition="'$(Cfg_2)'!=''">
88
+ <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
89
+ <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
90
+ <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
91
+ <DCC_DebugInformation>0</DCC_DebugInformation>
92
+ </PropertyGroup>
93
+ <ItemGroup>
94
+ <DelphiCompile Include="$(MainSource)">
95
+ <MainSource>MainSource</MainSource>
96
+ </DelphiCompile>
97
+ <BuildConfiguration Include="Release">
98
+ <Key>Cfg_2</Key>
99
+ <CfgParent>Base</CfgParent>
100
+ </BuildConfiguration>
101
+ <BuildConfiguration Include="Base">
102
+ <Key>Base</Key>
103
+ </BuildConfiguration>
104
+ <BuildConfiguration Include="Debug">
105
+ <Key>Cfg_1</Key>
106
+ <CfgParent>Base</CfgParent>
107
+ </BuildConfiguration>
108
+ </ItemGroup>
109
+ <ProjectExtensions>
110
+ <Borland.Personality>Delphi.Personality.12</Borland.Personality>
111
+ <Borland.ProjectType/>
112
+ <BorlandProject>
113
+ <Delphi.Personality>
114
+ <VersionInfo>
115
+ <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
116
+ <VersionInfo Name="AutoIncBuild">False</VersionInfo>
117
+ <VersionInfo Name="MajorVer">1</VersionInfo>
118
+ <VersionInfo Name="MinorVer">0</VersionInfo>
119
+ <VersionInfo Name="Release">0</VersionInfo>
120
+ <VersionInfo Name="Build">0</VersionInfo>
121
+ <VersionInfo Name="Debug">False</VersionInfo>
122
+ <VersionInfo Name="PreRelease">False</VersionInfo>
123
+ <VersionInfo Name="Special">False</VersionInfo>
124
+ <VersionInfo Name="Private">False</VersionInfo>
125
+ <VersionInfo Name="DLL">False</VersionInfo>
126
+ <VersionInfo Name="Locale">1049</VersionInfo>
127
+ <VersionInfo Name="CodePage">1251</VersionInfo>
128
+ </VersionInfo>
129
+ <VersionInfoKeys>
130
+ <VersionInfoKeys Name="CompanyName">Rake</VersionInfoKeys>
131
+ <VersionInfoKeys Name="FileDescription">Test rake-delphi project XE5 description</VersionInfoKeys>
132
+ <VersionInfoKeys Name="FileVersion">4.3.2.1</VersionInfoKeys>
133
+ <VersionInfoKeys Name="InternalName">testproject.exe</VersionInfoKeys>
134
+ <VersionInfoKeys Name="LegalCopyright">Copyright. Копирайт</VersionInfoKeys>
135
+ <VersionInfoKeys Name="LegalTrademarks">Trademark. Торговая марка</VersionInfoKeys>
136
+ <VersionInfoKeys Name="OriginalFilename">testproject.exe</VersionInfoKeys>
137
+ <VersionInfoKeys Name="ProductName">Test rake-delphi project XE5 product name</VersionInfoKeys>
138
+ <VersionInfoKeys Name="ProductVersion">1.2.3.4</VersionInfoKeys>
139
+ <VersionInfoKeys Name="Comments">Test project comment</VersionInfoKeys>
140
+ <VersionInfoKeys Name="CFBundleName"/>
141
+ <VersionInfoKeys Name="CFBundleDisplayName"/>
142
+ <VersionInfoKeys Name="UIDeviceFamily"/>
143
+ <VersionInfoKeys Name="CFBundleIdentifier"/>
144
+ <VersionInfoKeys Name="CFBundleVersion"/>
145
+ <VersionInfoKeys Name="CFBundlePackageType"/>
146
+ <VersionInfoKeys Name="CFBundleSignature"/>
147
+ <VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
148
+ <VersionInfoKeys Name="UISupportedInterfaceOrientations"/>
149
+ <VersionInfoKeys Name="CFBundleExecutable"/>
150
+ <VersionInfoKeys Name="CFBundleResourceSpecification"/>
151
+ <VersionInfoKeys Name="LSRequiresIPhoneOS"/>
152
+ <VersionInfoKeys Name="CFBundleInfoDictionaryVersion"/>
153
+ <VersionInfoKeys Name="CFBundleDevelopmentRegion"/>
154
+ <VersionInfoKeys Name="package"/>
155
+ <VersionInfoKeys Name="label"/>
156
+ <VersionInfoKeys Name="versionCode"/>
157
+ <VersionInfoKeys Name="versionName"/>
158
+ <VersionInfoKeys Name="persistent"/>
159
+ <VersionInfoKeys Name="restoreAnyVersion"/>
160
+ <VersionInfoKeys Name="installLocation"/>
161
+ <VersionInfoKeys Name="largeHeap"/>
162
+ <VersionInfoKeys Name="theme"/>
163
+ </VersionInfoKeys>
164
+ <Source>
165
+ <Source Name="MainSource">Project1.dpr</Source>
166
+ </Source>
167
+ </Delphi.Personality>
168
+ <Deployment/>
169
+ <Platforms>
170
+ <Platform value="Android">False</Platform>
171
+ <Platform value="Win32">True</Platform>
172
+ <Platform value="Win64">False</Platform>
173
+ </Platforms>
174
+ </BorlandProject>
175
+ <ProjectFileVersion>12</ProjectFileVersion>
176
+ </ProjectExtensions>
177
+ <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
178
+ <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
179
+ </Project>
data/test/test-delphi.rb CHANGED
@@ -8,10 +8,11 @@ require 'rake/delphi/project'
8
8
  require 'rake/delphi/tool'
9
9
  require 'rake/helpers/unittest'
10
10
  require 'helpers/consts'
11
+ require 'helpers/verinfo'
11
12
 
12
13
  module DelphiTests
13
14
 
14
- class TestDelphi < Test::Unit::TestCase
15
+ class TestDelphi < TestVerInfo
15
16
  private
16
17
  def reenable_tasks(task)
17
18
  return unless task.class <= Rake::Task
@@ -52,15 +53,18 @@ private
52
53
  end
53
54
 
54
55
  def exe
55
- exe = PROJECT_EXE % name.gsub(/[():]/, '_')
56
+ return PROJECT_EXE % name.gsub(/[():]/, '_')
56
57
  end
58
+
57
59
  public
58
60
  def setup
61
+ Rake::Delphi::Dcc32Tool.reinit
62
+ ENV['DELPHI_DIR'] = nil
63
+ super
59
64
  ENV['RAKE_DIR'] = PROJECT_PATH
60
65
  File.unlink(exe) if File.exists?(exe)
61
66
  res = PROJECT_PATH + '/resources.res'
62
67
  File.unlink(res) if File.exists?(res)
63
- # assert(! File.exists?(exe), 'File %s exists' % exe)
64
68
  require PROJECT_PATH + '/Rakefile.rb'
65
69
  end
66
70
 
@@ -109,6 +113,18 @@ public
109
113
  'testproject works-=CONFIG=-')
110
114
  end
111
115
 
116
+ def test_compile_use_absent_config
117
+ RakeFileUtils.verbose(Rake::Delphi::Logger.debug?) do
118
+ mv PROJECT_PATH.pathmap('%p%s%f.cfg'), PROJECT_PATH.pathmap('%p%s%f.absent.cfg')
119
+ begin
120
+ _test_compile_and_output({:usecfg => true},
121
+ 'testproject works')
122
+ ensure
123
+ mv PROJECT_PATH.pathmap('%p%s%f.absent.cfg'), PROJECT_PATH.pathmap('%p%s%f.cfg')
124
+ end
125
+ end
126
+ end
127
+
112
128
  def test_compile_use_library_path
113
129
  # usually Indy components are in Delphi library paths
114
130
  _test_compile_and_output({:defines => 'INDY', :uselibrarypath => true},
@@ -146,7 +162,19 @@ public
146
162
  end
147
163
  end
148
164
 
149
- class TestRCResourceCompiler < Test::Unit::TestCase
165
+ # extend Rake::Delphi::RCResourceCompiler with .delphidir method
166
+ # (just for tests)
167
+ module Rake::Delphi
168
+
169
+ class RCResourceCompiler
170
+ def delphidir
171
+ @@delphidir
172
+ end
173
+ end
174
+
175
+ end
176
+
177
+ class TestRCResourceCompiler < Test::Unit::TestCase
150
178
  private
151
179
  public
152
180
  def setup
@@ -163,4 +191,4 @@ public
163
191
  end
164
192
  end
165
193
 
166
- end
194
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rake'
4
+ require 'test/unit'
5
+ require 'rake/delphi/envvariables'
6
+ require 'rake/helpers/unittest'
7
+
8
+ class TestEnvVariables < Test::Unit::TestCase
9
+
10
+ def setup
11
+ ENV['BDS_PLATFORM'] = 'BDS platform'
12
+ ENV['BDS_PLATFORM_CASE'] = 'BDS platform case'
13
+ end
14
+
15
+ def test_expands
16
+ env_vars = Rake::Delphi::EnvVariables.new(nil, 'c:/delphi directory/')
17
+ assert_equal('c:/delphi directory', env_vars['BDS'])
18
+ assert_equal('c:/delphi directory/Lib', env_vars['BDSLIB'])
19
+ assert_equal('Platform: BDS platform', env_vars.expand('Platform: $(BDS_PLATFORM)'))
20
+ assert_equal('Platform: BDS platform case', env_vars.expand('Platform: $(bds_platform_case)'))
21
+ assert_equal('Env: $(BDS_NON_EXISTANT)', env_vars.expand('Env: $(BDS_NON_EXISTANT)'))
22
+ end
23
+ end
data/test/test-git.rb CHANGED
@@ -15,8 +15,8 @@ private
15
15
  Rake::Delphi::ChDir.new(@rake_task, @test_git_dir) do
16
16
  `rm -rf .git *`
17
17
  `git init .`
18
- `git config --global user.email "git@test.ru"`
19
- `git config --global user.name "Git test"`
18
+ `git config user.email "git@test.ru"`
19
+ `git config user.name "Git test"`
20
20
  `echo file content > file.txt`
21
21
  `git add file.txt`
22
22
  `git commit -m "first commit"`
data/test/test-hashes.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'rake'
4
- require 'fileutils'
5
4
  require 'test/unit'
6
5
  require 'rake/common/hashtask'
7
6
  require 'rake/helpers/unittest'
@@ -7,6 +7,7 @@ require 'rake/delphi/projectinfo'
7
7
  require 'rake/delphi/dcc32'
8
8
  require 'rake/helpers/unittest'
9
9
  require 'helpers/consts'
10
+ require 'helpers/verinfo'
10
11
 
11
12
  module Rake
12
13
  module Delphi
@@ -21,27 +22,37 @@ end
21
22
 
22
23
  module DelphiTests
23
24
 
24
- class TestBDSVersionInfo < Test::Unit::TestCase
25
+ class TestBDSVersionInfo < TestVerInfo
25
26
  private
26
27
  def version
27
- 2006
28
+ '2006'
29
+ end
30
+ protected
31
+ def delphi_version
32
+ return '10'
33
+ end
34
+
35
+ def do_getinfo
36
+ @info = Rake::Delphi::BDSVersionInfo.new(@rake_task)
28
37
  end
29
38
  public
30
39
  def setup
40
+ super
31
41
  @rake_task = Rake::Delphi::Dcc32Task.new('some-task-' + name, Rake.application)
32
42
  @rake_task.systempath = PROJECT_PATH + '/testproject.dpr'
33
- @info = Rake::Delphi::BDSVersionInfo.new(@rake_task)
43
+ do_getinfo
34
44
  end
35
45
 
36
46
  def test_info
47
+ return unless prepare_ver_info_file?
37
48
  assert_equal '4.3.2.1', @info['FileVersion']
38
49
  assert_equal 'Rake', @info['CompanyName']
39
- assert_equal 'Test rake-delphi project %d description' % version, @info['FileDescription']
50
+ assert_equal 'Test rake-delphi project %s description' % version, @info['FileDescription']
40
51
  assert_equal 'testproject.exe', @info['InternalName']
41
52
  assert_equal 'Copyright. ��������', @info['LegalCopyright']
42
53
  assert_equal 'Trademark. �������� �����', @info['LegalTrademarks']
43
54
  assert_equal 'testproject.exe', @info['OriginalFilename']
44
- assert_equal 'Test rake-delphi project %d product name' % version, @info['ProductName']
55
+ assert_equal 'Test rake-delphi project %s product name' % version, @info['ProductName']
45
56
  assert_equal '1.2.3.4', @info['ProductVersion']
46
57
  assert_equal 'Test project comment', @info['Comments']
47
58
  end
@@ -50,17 +61,86 @@ end
50
61
  class TestRAD2007VersionInfo < TestBDSVersionInfo
51
62
  private
52
63
  def version
53
- 2007
64
+ '2007'
65
+ end
66
+ protected
67
+ def do_getinfo
68
+ @info = Rake::Delphi::RAD2007VersionInfo.new(@rake_task)
69
+ end
70
+
71
+ def delphi_version
72
+ return '11'
54
73
  end
55
74
  public
56
- def setup
75
+ def test_info
57
76
  super
58
- @info = Rake::Delphi::RAD2007VersionInfo.new(@rake_task)
77
+ end
78
+ end
79
+
80
+ class TestRAD2010VersionInfo < TestBDSVersionInfo
81
+ private
82
+ def version
83
+ '2010'
84
+ end
85
+ protected
86
+ def do_getinfo
87
+ @info = Rake::Delphi::RAD2010VersionInfo.new(@rake_task)
88
+ end
89
+
90
+ def delphi_version
91
+ return '13'
92
+ end
93
+ public
94
+ def test_info
95
+ super
96
+ end
97
+ end
98
+
99
+ class TestXEVersionInfo < TestBDSVersionInfo
100
+ private
101
+ def version
102
+ 'XE5'
103
+ end
104
+ protected
105
+ def delphi_version
106
+ return '18'
59
107
  end
60
108
 
109
+ def do_getinfo
110
+ @info = Rake::Delphi::XEVersionInfo.new(@rake_task)
111
+ end
112
+ public
61
113
  def test_info
62
114
  super
63
115
  end
64
116
  end
65
117
 
66
- end
118
+ class TestBDSVersionInfoAbsent < TestBDSVersionInfo
119
+ protected
120
+ def prepare_ver_info_file?
121
+ return false
122
+ end
123
+ end
124
+
125
+ class TestRAD2007VersionInfoAbsent < TestRAD2007VersionInfo
126
+ protected
127
+ def prepare_ver_info_file?
128
+ return false
129
+ end
130
+ end
131
+
132
+ class TestRAD2010VersionInfoAbsent < TestRAD2010VersionInfo
133
+ protected
134
+ def prepare_ver_info_file?
135
+ return false
136
+ end
137
+ end
138
+
139
+ class TestXEVersionInfoAbsent < TestBDSVersionInfo
140
+ protected
141
+ def prepare_ver_info_file?
142
+ return false
143
+ end
144
+ end
145
+
146
+ end
data/test/test-zip.rb CHANGED
@@ -14,14 +14,6 @@ public
14
14
  File.unlink(@zip) if File.exists?(@zip)
15
15
  end
16
16
 
17
- def test_zip_no_task
18
- assert_raise NoMethodError do
19
- # first argument must be a Rake::Task
20
- # "undefined method `application' for nil:NilClass" must be raised
21
- Rake::Delphi::ZipTask.new(nil, nil, nil)
22
- end
23
- end
24
-
25
17
  def test_zip_no_filename
26
18
  assert_raise RuntimeError do
27
19
  # second argument must be non-empty