Skip to content

Commit 4c24aab

Browse files
0xcedHofmeisterAn
andauthored
feat(Oracle): Add support for WithDatabase(string) for Oracle 18 and onwards. (#1321)
Co-authored-by: Andre Hofmeister <[email protected]>
1 parent cc8610b commit 4c24aab

File tree

15 files changed

+241
-28
lines changed

15 files changed

+241
-28
lines changed

.github/workflows/cicd.yml

+4
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ jobs:
7272
{ name: "Testcontainers.Nats", runs-on: "ubuntu-22.04" },
7373
{ name: "Testcontainers.Neo4j", runs-on: "ubuntu-22.04" },
7474
{ name: "Testcontainers.Oracle", runs-on: "ubuntu-22.04" },
75+
{ name: "Testcontainers.Oracle11", runs-on: "ubuntu-22.04" },
76+
{ name: "Testcontainers.Oracle18", runs-on: "ubuntu-22.04" },
77+
{ name: "Testcontainers.Oracle21", runs-on: "ubuntu-22.04" },
78+
{ name: "Testcontainers.Oracle23", runs-on: "ubuntu-22.04" },
7579
{ name: "Testcontainers.Papercut", runs-on: "ubuntu-22.04" },
7680
{ name: "Testcontainers.PostgreSql", runs-on: "ubuntu-22.04" },
7781
{ name: "Testcontainers.PubSub", runs-on: "ubuntu-22.04" },

Directory.Packages.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
<PackageVersion Include="NATS.Client" Version="1.0.8"/>
6969
<PackageVersion Include="Neo4j.Driver" Version="5.5.0"/>
7070
<PackageVersion Include="Npgsql" Version="6.0.11"/>
71-
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="3.21.160"/>
71+
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="23.7.0"/>
7272
<PackageVersion Include="RabbitMQ.Client" Version="6.4.0"/>
7373
<PackageVersion Include="RavenDB.Client" Version="5.4.100"/>
7474
<PackageVersion Include="Selenium.WebDriver" Version="4.8.1"/>

Testcontainers.sln

+28
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Neo4j.Tests"
187187
EndProject
188188
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Oracle.Tests", "tests\Testcontainers.Oracle.Tests\Testcontainers.Oracle.Tests.csproj", "{4AC1088B-9965-4497-AC8E-570F1AD5631F}"
189189
EndProject
190+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Oracle11.Tests", "tests\Testcontainers.Oracle11.Tests\Testcontainers.Oracle11.Tests.csproj", "{0A0AC20D-226B-46F9-B267-0D00964A7601}"
191+
EndProject
192+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Oracle18.Tests", "tests\Testcontainers.Oracle18.Tests\Testcontainers.Oracle18.Tests.csproj", "{E4C887A9-A44A-4641-BB9B-0664CC4C362F}"
193+
EndProject
194+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Oracle21.Tests", "tests\Testcontainers.Oracle21.Tests\Testcontainers.Oracle21.Tests.csproj", "{1F6415BD-646E-436A-9F57-9AE30A0AA694}"
195+
EndProject
196+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Oracle23.Tests", "tests\Testcontainers.Oracle23.Tests\Testcontainers.Oracle23.Tests.csproj", "{FC417A93-4521-4FDB-943E-23886F3243C8}"
197+
EndProject
190198
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Papercut.Tests", "tests\Testcontainers.Papercut.Tests\Testcontainers.Papercut.Tests.csproj", "{F03FA970-BE2B-4AE2-96FE-7E1F805CEA20}"
191199
EndProject
192200
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Testcontainers.Platform.Linux.Tests", "tests\Testcontainers.Platform.Linux.Tests\Testcontainers.Platform.Linux.Tests.csproj", "{DA1D7ADE-452C-4369-83CC-56289176EACD}"
@@ -578,6 +586,22 @@ Global
578586
{4AC1088B-9965-4497-AC8E-570F1AD5631F}.Debug|Any CPU.Build.0 = Debug|Any CPU
579587
{4AC1088B-9965-4497-AC8E-570F1AD5631F}.Release|Any CPU.ActiveCfg = Release|Any CPU
580588
{4AC1088B-9965-4497-AC8E-570F1AD5631F}.Release|Any CPU.Build.0 = Release|Any CPU
589+
{0A0AC20D-226B-46F9-B267-0D00964A7601}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
590+
{0A0AC20D-226B-46F9-B267-0D00964A7601}.Debug|Any CPU.Build.0 = Debug|Any CPU
591+
{0A0AC20D-226B-46F9-B267-0D00964A7601}.Release|Any CPU.ActiveCfg = Release|Any CPU
592+
{0A0AC20D-226B-46F9-B267-0D00964A7601}.Release|Any CPU.Build.0 = Release|Any CPU
593+
{E4C887A9-A44A-4641-BB9B-0664CC4C362F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
594+
{E4C887A9-A44A-4641-BB9B-0664CC4C362F}.Debug|Any CPU.Build.0 = Debug|Any CPU
595+
{E4C887A9-A44A-4641-BB9B-0664CC4C362F}.Release|Any CPU.ActiveCfg = Release|Any CPU
596+
{E4C887A9-A44A-4641-BB9B-0664CC4C362F}.Release|Any CPU.Build.0 = Release|Any CPU
597+
{1F6415BD-646E-436A-9F57-9AE30A0AA694}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
598+
{1F6415BD-646E-436A-9F57-9AE30A0AA694}.Debug|Any CPU.Build.0 = Debug|Any CPU
599+
{1F6415BD-646E-436A-9F57-9AE30A0AA694}.Release|Any CPU.ActiveCfg = Release|Any CPU
600+
{1F6415BD-646E-436A-9F57-9AE30A0AA694}.Release|Any CPU.Build.0 = Release|Any CPU
601+
{FC417A93-4521-4FDB-943E-23886F3243C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
602+
{FC417A93-4521-4FDB-943E-23886F3243C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
603+
{FC417A93-4521-4FDB-943E-23886F3243C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
604+
{FC417A93-4521-4FDB-943E-23886F3243C8}.Release|Any CPU.Build.0 = Release|Any CPU
581605
{F03FA970-BE2B-4AE2-96FE-7E1F805CEA20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
582606
{F03FA970-BE2B-4AE2-96FE-7E1F805CEA20}.Debug|Any CPU.Build.0 = Debug|Any CPU
583607
{F03FA970-BE2B-4AE2-96FE-7E1F805CEA20}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -735,6 +759,10 @@ Global
735759
{87A3F137-6DC3-4CE5-91E6-01797D076086} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
736760
{D3F63405-C0FA-4F83-8B79-E30BFF5FF5BF} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
737761
{4AC1088B-9965-4497-AC8E-570F1AD5631F} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
762+
{0A0AC20D-226B-46F9-B267-0D00964A7601} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
763+
{E4C887A9-A44A-4641-BB9B-0664CC4C362F} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
764+
{1F6415BD-646E-436A-9F57-9AE30A0AA694} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
765+
{FC417A93-4521-4FDB-943E-23886F3243C8} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
738766
{F03FA970-BE2B-4AE2-96FE-7E1F805CEA20} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
739767
{DA1D7ADE-452C-4369-83CC-56289176EACD} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}
740768
{3E55CBE8-AFE8-426D-9470-49D63CD1051C} = {7164F1FB-7F24-444A-ACD2-2C329C2B3CCF}

src/Testcontainers.Oracle/OracleBuilder.cs

+50-11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public sealed class OracleBuilder : ContainerBuilder<OracleBuilder, OracleContai
88

99
public const ushort OraclePort = 1521;
1010

11+
[Obsolete("This constant is obsolete and should not be used. It is only applicable for Oracle images between versions 11 and 22.")]
1112
public const string DefaultDatabase = "XEPDB1";
1213

1314
public const string DefaultUsername = "oracle";
@@ -36,6 +37,19 @@ private OracleBuilder(OracleConfiguration resourceConfiguration)
3637
/// <inheritdoc />
3738
protected override OracleConfiguration DockerResourceConfiguration { get; }
3839

40+
/// <summary>
41+
/// Sets the Oracle database.
42+
/// </summary>
43+
/// <remarks>
44+
/// The database can only be set for Oracle 18 and onwards.
45+
/// </remarks>
46+
/// <param name="database">The Oracle database.</param>
47+
/// <returns>A configured instance of <see cref="OracleBuilder" />.</returns>
48+
public OracleBuilder WithDatabase(string database)
49+
{
50+
return Merge(DockerResourceConfiguration, new OracleConfiguration(database: database));
51+
}
52+
3953
/// <summary>
4054
/// Sets the Oracle username.
4155
/// </summary>
@@ -63,6 +77,18 @@ public OracleBuilder WithPassword(string password)
6377
public override OracleContainer Build()
6478
{
6579
Validate();
80+
81+
var defaultServiceName = GetDefaultServiceName();
82+
if (DockerResourceConfiguration.Database == null)
83+
{
84+
return new OracleContainer(WithDatabase(defaultServiceName).DockerResourceConfiguration);
85+
}
86+
87+
if (DockerResourceConfiguration.Database != defaultServiceName)
88+
{
89+
return new OracleContainer(WithEnvironment("ORACLE_DATABASE", DockerResourceConfiguration.Database).DockerResourceConfiguration);
90+
}
91+
6692
return new OracleContainer(DockerResourceConfiguration);
6793
}
6894

@@ -72,7 +98,6 @@ protected override OracleBuilder Init()
7298
return base.Init()
7399
.WithImage(OracleImage)
74100
.WithPortBinding(OraclePort, true)
75-
.WithDatabase(DefaultDatabase)
76101
.WithUsername(DefaultUsername)
77102
.WithPassword(DefaultPassword)
78103
.WithWaitStrategy(Wait.ForUnixContainer().UntilMessageIsLogged("DATABASE IS READY TO USE!"));
@@ -83,6 +108,18 @@ protected override void Validate()
83108
{
84109
base.Validate();
85110

111+
const string message = "The image '{0}' does not support configuring the database. It is only supported on Oracle 18 and onwards.";
112+
113+
Predicate<OracleConfiguration> databaseConfigurationNotSupported = value =>
114+
value.Database != null && value.Image.MatchVersion(v => v.Major < 18);
115+
116+
_ = Guard.Argument(DockerResourceConfiguration, nameof(DockerResourceConfiguration.Database))
117+
.ThrowIf(argument => databaseConfigurationNotSupported(argument.Value), _ => throw new NotSupportedException(string.Format(message, DockerResourceConfiguration.Image.FullName)));
118+
119+
_ = Guard.Argument(DockerResourceConfiguration.Username, nameof(DockerResourceConfiguration.Username))
120+
.NotNull()
121+
.NotEmpty();
122+
86123
_ = Guard.Argument(DockerResourceConfiguration.Password, nameof(DockerResourceConfiguration.Password))
87124
.NotNull()
88125
.NotEmpty();
@@ -106,16 +143,18 @@ protected override OracleBuilder Merge(OracleConfiguration oldValue, OracleConfi
106143
return new OracleBuilder(new OracleConfiguration(oldValue, newValue));
107144
}
108145

109-
/// <summary>
110-
/// Sets the Oracle database.
111-
/// </summary>
112-
/// <remarks>
113-
/// The Docker image does not allow to configure the database.
114-
/// </remarks>
115-
/// <param name="database">The Oracle database.</param>
116-
/// <returns>A configured instance of <see cref="OracleBuilder" />.</returns>
117-
private OracleBuilder WithDatabase(string database)
146+
private string GetDefaultServiceName()
118147
{
119-
return Merge(DockerResourceConfiguration, new OracleConfiguration(database: database));
148+
if (DockerResourceConfiguration.Image.MatchVersion(v => v.Major >= 23))
149+
{
150+
return "FREEPDB1";
151+
}
152+
153+
if (DockerResourceConfiguration.Image.MatchVersion(v => v.Major > 11))
154+
{
155+
return "XEPDB1";
156+
}
157+
158+
return "XE";
120159
}
121160
}
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,13 @@
11
namespace Testcontainers.Oracle;
22

3-
public sealed class OracleContainerTest : IAsyncLifetime
3+
public abstract class OracleContainerTest(OracleContainerTest.OracleFixture oracleFixture)
44
{
5-
private readonly OracleContainer _oracleContainer = new OracleBuilder().Build();
6-
7-
public Task InitializeAsync()
8-
{
9-
return _oracleContainer.StartAsync();
10-
}
11-
12-
public Task DisposeAsync()
13-
{
14-
return _oracleContainer.DisposeAsync().AsTask();
15-
}
16-
175
[Fact]
186
[Trait(nameof(DockerCli.DockerPlatform), nameof(DockerCli.DockerPlatform.Linux))]
197
public void ConnectionStateReturnsOpen()
208
{
219
// Given
22-
using DbConnection connection = new OracleConnection(_oracleContainer.GetConnectionString());
10+
using DbConnection connection = oracleFixture.CreateConnection();
2311

2412
// When
2513
connection.Open();
@@ -36,11 +24,64 @@ public async Task ExecScriptReturnsSuccessful()
3624
const string scriptContent = "SELECT 1 FROM DUAL;";
3725

3826
// When
39-
var execResult = await _oracleContainer.ExecScriptAsync(scriptContent)
27+
var execResult = await oracleFixture.Container.ExecScriptAsync(scriptContent)
4028
.ConfigureAwait(true);
4129

4230
// Then
4331
Assert.True(0L.Equals(execResult.ExitCode), execResult.Stderr);
4432
Assert.Empty(execResult.Stderr);
4533
}
34+
35+
public abstract class OracleFixture(IMessageSink messageSink, string edition, int? version, string database = null) : DbContainerFixture<OracleBuilder, OracleContainer>(messageSink)
36+
{
37+
public override DbProviderFactory DbProviderFactory => OracleClientFactory.Instance;
38+
39+
protected override OracleBuilder Configure(OracleBuilder builder)
40+
{
41+
if (edition == null && version == null)
42+
{
43+
return builder;
44+
}
45+
46+
var image = $"gvenzl/oracle-{edition}:{version}-slim-faststart";
47+
return database == null ? builder.WithImage(image) : builder.WithImage(image).WithDatabase(database);
48+
}
49+
}
50+
51+
#if ORACLE_DEFAULT
52+
[UsedImplicitly] public sealed class OracleDefault(OracleDefaultFixture fixture) : OracleContainerTest(fixture), IClassFixture<OracleDefaultFixture>;
53+
[UsedImplicitly] public sealed class OracleDefaultFixture(IMessageSink messageSink) : OracleFixture(messageSink, null, null);
54+
#endif
55+
56+
#if ORACLE_11
57+
[UsedImplicitly] public sealed class Oracle11(Oracle11Fixture fixture) : OracleContainerTest(fixture), IClassFixture<Oracle11Fixture>;
58+
[UsedImplicitly] public sealed class Oracle11Fixture(IMessageSink messageSink) : OracleFixture(messageSink, "xe", 11);
59+
#endif
60+
61+
#if ORACLE_18
62+
[UsedImplicitly] public sealed class Oracle18(Oracle18Fixture fixture) : OracleContainerTest(fixture), IClassFixture<Oracle18Fixture>;
63+
[UsedImplicitly] public sealed class Oracle18Default(Oracle18FixtureDefault fixture) : OracleContainerTest(fixture), IClassFixture<Oracle18FixtureDefault>;
64+
[UsedImplicitly] public sealed class Oracle18Scott(Oracle18FixtureScott fixture) : OracleContainerTest(fixture), IClassFixture<Oracle18FixtureScott>;
65+
[UsedImplicitly] public sealed class Oracle18Fixture(IMessageSink messageSink) : OracleFixture(messageSink, "xe", 18);
66+
[UsedImplicitly] public sealed class Oracle18FixtureDefault(IMessageSink messageSink) : OracleFixture(messageSink, "xe", 18, "XEPDB1");
67+
[UsedImplicitly] public sealed class Oracle18FixtureScott(IMessageSink messageSink) : OracleFixture(messageSink, "xe", 18, "SCOTT");
68+
#endif
69+
70+
#if ORACLE_21
71+
[UsedImplicitly] public sealed class Oracle21(Oracle21Fixture fixture) : OracleContainerTest(fixture), IClassFixture<Oracle21Fixture>;
72+
[UsedImplicitly] public sealed class Oracle21Default(Oracle21FixtureDefault fixture) : OracleContainerTest(fixture), IClassFixture<Oracle21FixtureDefault>;
73+
[UsedImplicitly] public sealed class Oracle21Scott(Oracle21FixtureScott fixture) : OracleContainerTest(fixture), IClassFixture<Oracle21FixtureScott>;
74+
[UsedImplicitly] public sealed class Oracle21Fixture(IMessageSink messageSink) : OracleFixture(messageSink, "xe", 21);
75+
[UsedImplicitly] public sealed class Oracle21FixtureDefault(IMessageSink messageSink) : OracleFixture(messageSink, "xe", 21, "XEPDB1");
76+
[UsedImplicitly] public sealed class Oracle21FixtureScott(IMessageSink messageSink) : OracleFixture(messageSink, "xe", 21, "SCOTT");
77+
#endif
78+
79+
#if ORACLE_23
80+
[UsedImplicitly] public sealed class Oracle23(Oracle23Fixture fixture) : OracleContainerTest(fixture), IClassFixture<Oracle23Fixture>;
81+
[UsedImplicitly] public sealed class Oracle23Default(Oracle23FixtureDefault fixture) : OracleContainerTest(fixture), IClassFixture<Oracle23FixtureDefault>;
82+
[UsedImplicitly] public sealed class Oracle23Scott(Oracle23FixtureScott fixture) : OracleContainerTest(fixture), IClassFixture<Oracle23FixtureScott>;
83+
[UsedImplicitly] public sealed class Oracle23Fixture(IMessageSink messageSink) : OracleFixture(messageSink, "free", 23);
84+
[UsedImplicitly] public sealed class Oracle23FixtureDefault(IMessageSink messageSink) : OracleFixture(messageSink, "free", 23, "FREEPDB1");
85+
[UsedImplicitly] public sealed class Oracle23FixtureScott(IMessageSink messageSink) : OracleFixture(messageSink, "free", 23, "SCOTT");
86+
#endif
4687
}

tests/Testcontainers.Oracle.Tests/Testcontainers.Oracle.Tests.csproj

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<TargetFrameworks>net9.0</TargetFrameworks>
44
<IsPackable>false</IsPackable>
55
<IsPublishable>false</IsPublishable>
6+
<DefineConstants>$(DefineConstants);ORACLE_DEFAULT</DefineConstants>
67
</PropertyGroup>
78
<ItemGroup>
89
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
@@ -13,6 +14,7 @@
1314
</ItemGroup>
1415
<ItemGroup>
1516
<ProjectReference Include="../../src/Testcontainers.Oracle/Testcontainers.Oracle.csproj"/>
17+
<ProjectReference Include="../../src/Testcontainers.Xunit/Testcontainers.Xunit.csproj"/>
1618
<ProjectReference Include="../Testcontainers.Commons/Testcontainers.Commons.csproj"/>
1719
</ItemGroup>
1820
</Project>

tests/Testcontainers.Oracle.Tests/Usings.cs

+4-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,8 @@
22
global using System.Data.Common;
33
global using System.Threading.Tasks;
44
global using DotNet.Testcontainers.Commons;
5+
global using JetBrains.Annotations;
56
global using Oracle.ManagedDataAccess.Client;
6-
global using Xunit;
7+
global using Testcontainers.Xunit;
8+
global using Xunit;
9+
global using Xunit.Abstractions;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
root = true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFrameworks>net9.0</TargetFrameworks>
4+
<IsPackable>false</IsPackable>
5+
<IsPublishable>false</IsPublishable>
6+
<DefineConstants>$(DefineConstants);ORACLE_11</DefineConstants>
7+
</PropertyGroup>
8+
<ItemGroup>
9+
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
10+
<PackageReference Include="coverlet.collector"/>
11+
<PackageReference Include="xunit.runner.visualstudio"/>
12+
<PackageReference Include="xunit"/>
13+
<PackageReference Include="Oracle.ManagedDataAccess.Core"/>
14+
</ItemGroup>
15+
<ItemGroup>
16+
<ProjectReference Include="../../src/Testcontainers.Oracle/Testcontainers.Oracle.csproj"/>
17+
<ProjectReference Include="../../src/Testcontainers.Xunit/Testcontainers.Xunit.csproj"/>
18+
<ProjectReference Include="../Testcontainers.Commons/Testcontainers.Commons.csproj"/>
19+
</ItemGroup>
20+
<ItemGroup>
21+
<Compile Include="../Testcontainers.Oracle.Tests/*.cs"/>
22+
</ItemGroup>
23+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
root = true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFrameworks>net9.0</TargetFrameworks>
4+
<IsPackable>false</IsPackable>
5+
<IsPublishable>false</IsPublishable>
6+
<DefineConstants>$(DefineConstants);ORACLE_18</DefineConstants>
7+
</PropertyGroup>
8+
<ItemGroup>
9+
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
10+
<PackageReference Include="coverlet.collector"/>
11+
<PackageReference Include="xunit.runner.visualstudio"/>
12+
<PackageReference Include="xunit"/>
13+
<PackageReference Include="Oracle.ManagedDataAccess.Core"/>
14+
</ItemGroup>
15+
<ItemGroup>
16+
<ProjectReference Include="../../src/Testcontainers.Oracle/Testcontainers.Oracle.csproj"/>
17+
<ProjectReference Include="../../src/Testcontainers.Xunit/Testcontainers.Xunit.csproj"/>
18+
<ProjectReference Include="../Testcontainers.Commons/Testcontainers.Commons.csproj"/>
19+
</ItemGroup>
20+
<ItemGroup>
21+
<Compile Include="../Testcontainers.Oracle.Tests/*.cs"/>
22+
</ItemGroup>
23+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
root = true
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<TargetFrameworks>net9.0</TargetFrameworks>
4+
<IsPackable>false</IsPackable>
5+
<IsPublishable>false</IsPublishable>
6+
<DefineConstants>$(DefineConstants);ORACLE_21</DefineConstants>
7+
</PropertyGroup>
8+
<ItemGroup>
9+
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
10+
<PackageReference Include="coverlet.collector"/>
11+
<PackageReference Include="xunit.runner.visualstudio"/>
12+
<PackageReference Include="xunit"/>
13+
<PackageReference Include="Oracle.ManagedDataAccess.Core"/>
14+
</ItemGroup>
15+
<ItemGroup>
16+
<ProjectReference Include="../../src/Testcontainers.Oracle/Testcontainers.Oracle.csproj"/>
17+
<ProjectReference Include="../../src/Testcontainers.Xunit/Testcontainers.Xunit.csproj"/>
18+
<ProjectReference Include="../Testcontainers.Commons/Testcontainers.Commons.csproj"/>
19+
</ItemGroup>
20+
<ItemGroup>
21+
<Compile Include="../Testcontainers.Oracle.Tests/*.cs"/>
22+
</ItemGroup>
23+
</Project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
root = true

0 commit comments

Comments
 (0)