8
8
9
9
namespace Microsoft . NET . Build . Containers . Tasks . IntegrationTests ;
10
10
11
- [ Collection ( "Docker tests" ) ]
11
+ [ Collection ( nameof ( MSBuildCollection ) ) ]
12
12
public class ParseContainerPropertiesTests
13
13
{
14
- [ DockerAvailableFact ]
14
+ [ Fact ]
15
15
public void Baseline ( )
16
16
{
17
- var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( ) {
17
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
18
+ {
18
19
[ ContainerBaseImage ] = "mcr.microsoft.com/dotnet/runtime:7.0" ,
19
20
[ ContainerRegistry ] = "localhost:5010" ,
20
21
[ ContainerRepository ] = "dotnet/testimage" ,
21
22
[ ContainerImageTags ] = "7.0;latest"
22
23
} ) ;
23
24
using var _ = d ;
24
25
var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
25
- Assert . True ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
26
+ Assert . True ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
26
27
27
28
Assert . Equal ( "mcr.microsoft.com" , instance . GetPropertyValue ( ContainerBaseRegistry ) ) ;
28
29
Assert . Equal ( "dotnet/runtime" , instance . GetPropertyValue ( ContainerBaseName ) ) ;
@@ -33,58 +34,62 @@ public void Baseline()
33
34
instance . GetItems ( "ProjectCapability" ) . Select ( i => i . EvaluatedInclude ) . ToArray ( ) . Should ( ) . BeEquivalentTo ( new [ ] { "NetSdkOCIImageBuild" } ) ;
34
35
}
35
36
36
- [ DockerAvailableFact ]
37
+ [ Fact ]
37
38
public void SpacesGetReplacedWithDashes ( )
38
39
{
39
- var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( ) {
40
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
41
+ {
40
42
[ ContainerBaseImage ] = "mcr.microsoft.com/dotnet runtime:7.0" ,
41
43
[ ContainerRegistry ] = "localhost:5010"
42
44
} ) ;
43
45
using var _ = d ;
44
46
var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
45
- Assert . True ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
47
+ Assert . True ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
46
48
47
- Assert . Equal ( "mcr.microsoft.com" , instance . GetPropertyValue ( ContainerBaseRegistry ) ) ;
49
+ Assert . Equal ( "mcr.microsoft.com" , instance . GetPropertyValue ( ContainerBaseRegistry ) ) ;
48
50
Assert . Equal ( "dotnet-runtime" , instance . GetPropertyValue ( ContainerBaseName ) ) ;
49
51
Assert . Equal ( "7.0" , instance . GetPropertyValue ( ContainerBaseTag ) ) ;
50
52
}
51
53
52
- [ DockerAvailableFact ]
54
+ [ Fact ]
53
55
public void RegexCatchesInvalidContainerNames ( )
54
56
{
55
- var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( ) {
57
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
58
+ {
56
59
[ ContainerBaseImage ] = "mcr.microsoft.com/dotnet/runtime:7.0" ,
57
60
[ ContainerRegistry ] = "localhost:5010" ,
58
61
[ ContainerRepository ] = "dotnet testimage" ,
59
62
[ ContainerImageTag ] = "5.0"
60
63
} ) ;
61
64
using var _ = d ;
62
65
var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
63
- Assert . True ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
66
+ Assert . True ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
64
67
Assert . Contains ( logs . Messages , m => m . Message ? . Contains ( "'dotnet testimage' was not a valid container image name, it was normalized to 'dotnet-testimage'" ) == true ) ;
65
68
}
66
69
67
- [ DockerAvailableFact ]
70
+ [ Fact ]
68
71
public void RegexCatchesInvalidContainerTags ( )
69
72
{
70
- var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( ) {
73
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
74
+ {
71
75
[ ContainerBaseImage ] = "mcr.microsoft.com/dotnet/runtime:7.0" ,
72
76
[ ContainerRegistry ] = "localhost:5010" ,
73
77
[ ContainerRepository ] = "dotnet/testimage" ,
74
78
[ ContainerImageTag ] = "5 0"
75
79
} ) ;
76
80
using var _ = d ;
77
81
var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
78
- Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
82
+ Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
79
83
80
84
Assert . True ( logs . Errors . Count > 0 ) ;
81
85
Assert . Equal ( logs . Errors [ 0 ] . Code , ErrorCodes . CONTAINER2007 ) ;
82
86
}
83
87
84
- [ DockerAvailableFact ]
88
+ [ Fact ]
85
89
public void CanOnlySupplyOneOfTagAndTags ( )
86
90
{
87
- var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( ) {
91
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
92
+ {
88
93
[ ContainerBaseImage ] = "mcr.microsoft.com/dotnet/runtime:7.0" ,
89
94
[ ContainerRegistry ] = "localhost:5010" ,
90
95
[ ContainerRepository ] = "dotnet/testimage" ,
@@ -93,41 +98,60 @@ public void CanOnlySupplyOneOfTagAndTags()
93
98
} ) ;
94
99
using var _ = d ;
95
100
var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
96
- Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
101
+ Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
97
102
98
103
Assert . True ( logs . Errors . Count > 0 ) ;
99
104
Assert . Equal ( logs . Errors [ 0 ] . Code , ErrorCodes . CONTAINER2008 ) ;
100
105
}
101
106
102
- [ DockerAvailableFact ]
107
+ [ Fact ]
108
+ public void InvalidTagsThrowError ( )
109
+ {
110
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
111
+ {
112
+ [ ContainerBaseImage ] = "mcr.microsoft.com/dotnet/aspnet:8.0" ,
113
+ [ ContainerRepository ] = "dotnet/testimage" ,
114
+ [ ContainerImageTags ] = "'latest;oldest'"
115
+ } ) ;
116
+ using var _ = d ;
117
+ var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
118
+ Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
119
+
120
+ Assert . True ( logs . Errors . Count > 0 ) ;
121
+ Assert . Equal ( logs . Errors [ 0 ] . Code , ErrorCodes . CONTAINER2010 ) ;
122
+ }
123
+
124
+ [ Fact ]
103
125
public void FailsOnCompletelyInvalidRepositoryNames ( )
104
126
{
105
- var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( ) {
127
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
128
+ {
106
129
[ ContainerBaseImage ] = "mcr.microsoft.com/dotnet/runtime:7.0" ,
107
130
[ ContainerRegistry ] = "localhost:5010" ,
108
131
[ ContainerImageName ] = "㓳㓴㓵㓶㓷㓹㓺㓻" ,
109
132
[ ContainerImageTag ] = "5.0"
110
133
} ) ;
111
134
using var _ = d ;
112
135
var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
113
- Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
136
+ Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
114
137
115
138
Assert . True ( logs . Errors . Count > 0 ) ;
116
139
Assert . Equal ( logs . Errors [ 0 ] . Code , ErrorCodes . CONTAINER2005 ) ;
117
140
}
118
141
119
- [ DockerAvailableFact ]
142
+ [ Fact ]
120
143
public void FailsWhenFirstCharIsAUnicodeLetterButNonLatin ( )
121
144
{
122
- var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( ) {
145
+ var ( project , logs , d ) = ProjectInitializer . InitProject ( new ( )
146
+ {
123
147
[ ContainerBaseImage ] = "mcr.microsoft.com/dotnet/runtime:7.0" ,
124
148
[ ContainerRegistry ] = "localhost:5010" ,
125
149
[ ContainerImageName ] = "㓳but-otherwise-valid" ,
126
150
[ ContainerImageTag ] = "5.0"
127
151
} ) ;
128
152
using var _ = d ;
129
153
var instance = project . CreateProjectInstance ( global ::Microsoft . Build . Execution . ProjectInstanceSettings . None ) ;
130
- Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
154
+ Assert . False ( instance . Build ( new [ ] { ComputeContainerConfig } , new [ ] { logs } , null , out var outputs ) ) ;
131
155
132
156
Assert . True ( logs . Errors . Count > 0 ) ;
133
157
Assert . Equal ( logs . Errors [ 0 ] . Code , ErrorCodes . CONTAINER2005 ) ;
0 commit comments