-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Define initial CLI, query from command (#1)
- Loading branch information
Showing
32 changed files
with
758 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,185 @@ | ||
# editorconfig.org | ||
|
||
# top-most EditorConfig file | ||
root = true | ||
|
||
# Default settings: | ||
# A newline ending every file | ||
# Use 4 spaces as indentation | ||
[*] | ||
insert_final_newline = true | ||
indent_style = space | ||
indent_size = 4 | ||
trim_trailing_whitespace = true | ||
|
||
# Generated code | ||
[*{_AssemblyInfo.cs,.notsupported.cs,AsmOffsets.cs}] | ||
generated_code = true | ||
|
||
# C# files | ||
[*.cs] | ||
|
||
# Diagnostic suppressions | ||
dotnet_diagnostic.CA1860.severity = none | ||
|
||
# New line preferences | ||
csharp_new_line_before_open_brace = all | ||
csharp_new_line_before_else = true | ||
csharp_new_line_before_catch = true | ||
csharp_new_line_before_finally = true | ||
csharp_new_line_before_members_in_object_initializers = true | ||
csharp_new_line_before_members_in_anonymous_types = true | ||
csharp_new_line_between_query_expression_clauses = true | ||
|
||
# Indentation preferences | ||
csharp_indent_block_contents = true | ||
csharp_indent_braces = false | ||
csharp_indent_case_contents = true | ||
csharp_indent_case_contents_when_block = true | ||
csharp_indent_switch_labels = true | ||
csharp_indent_labels = one_less_than_current | ||
|
||
# Modifier preferences | ||
csharp_preferred_modifier_order = public,private,protected,internal,file,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,required,volatile,async:suggestion | ||
|
||
# avoid this. unless absolutely necessary | ||
dotnet_style_qualification_for_field = false:suggestion | ||
dotnet_style_qualification_for_property = false:suggestion | ||
dotnet_style_qualification_for_method = false:suggestion | ||
dotnet_style_qualification_for_event = false:suggestion | ||
|
||
# Types: use keywords instead of BCL types, and permit var only when the type is clear | ||
csharp_style_var_for_built_in_types = false:suggestion | ||
csharp_style_var_when_type_is_apparent = false:none | ||
csharp_style_var_elsewhere = false:suggestion | ||
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion | ||
dotnet_style_predefined_type_for_member_access = true:suggestion | ||
|
||
# name all constant fields using PascalCase | ||
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion | ||
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields | ||
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style | ||
dotnet_naming_symbols.constant_fields.applicable_kinds = field | ||
dotnet_naming_symbols.constant_fields.required_modifiers = const | ||
dotnet_naming_style.pascal_case_style.capitalization = pascal_case | ||
|
||
# static fields should have s_ prefix | ||
dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion | ||
dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields | ||
dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style | ||
dotnet_naming_symbols.static_fields.applicable_kinds = field | ||
dotnet_naming_symbols.static_fields.required_modifiers = static | ||
dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected | ||
dotnet_naming_style.static_prefix_style.required_prefix = s_ | ||
dotnet_naming_style.static_prefix_style.capitalization = camel_case | ||
|
||
# internal and private fields should be _camelCase | ||
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion | ||
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields | ||
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style | ||
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field | ||
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal | ||
dotnet_naming_style.camel_case_underscore_style.required_prefix = _ | ||
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case | ||
|
||
# Code style defaults | ||
csharp_using_directive_placement = outside_namespace:suggestion | ||
dotnet_sort_system_directives_first = true | ||
csharp_prefer_braces = true:silent | ||
csharp_preserve_single_line_blocks = true:none | ||
csharp_preserve_single_line_statements = false:none | ||
csharp_prefer_static_local_function = true:suggestion | ||
csharp_prefer_simple_using_statement = false:none | ||
csharp_style_prefer_switch_expression = true:suggestion | ||
dotnet_style_readonly_field = true:suggestion | ||
|
||
# Expression-level preferences | ||
dotnet_style_object_initializer = true:suggestion | ||
dotnet_style_collection_initializer = true:suggestion | ||
dotnet_style_explicit_tuple_names = true:suggestion | ||
dotnet_style_coalesce_expression = true:suggestion | ||
dotnet_style_null_propagation = true:suggestion | ||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion | ||
dotnet_style_prefer_inferred_tuple_names = true:suggestion | ||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion | ||
dotnet_style_prefer_auto_properties = true:suggestion | ||
dotnet_style_prefer_conditional_expression_over_assignment = true:silent | ||
dotnet_style_prefer_conditional_expression_over_return = true:silent | ||
csharp_prefer_simple_default_expression = true:suggestion | ||
|
||
# Expression-bodied members | ||
csharp_style_expression_bodied_methods = true:silent | ||
csharp_style_expression_bodied_constructors = true:silent | ||
csharp_style_expression_bodied_operators = true:silent | ||
csharp_style_expression_bodied_properties = true:silent | ||
csharp_style_expression_bodied_indexers = true:silent | ||
csharp_style_expression_bodied_accessors = true:silent | ||
csharp_style_expression_bodied_lambdas = true:silent | ||
csharp_style_expression_bodied_local_functions = true:silent | ||
|
||
# Pattern matching | ||
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion | ||
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion | ||
csharp_style_inlined_variable_declaration = true:suggestion | ||
|
||
# Null checking preferences | ||
csharp_style_throw_expression = true:suggestion | ||
csharp_style_conditional_delegate_call = true:suggestion | ||
|
||
# Other features | ||
csharp_style_prefer_index_operator = false:none | ||
csharp_style_prefer_range_operator = false:none | ||
csharp_style_pattern_local_over_anonymous_function = false:none | ||
|
||
# Space preferences | ||
csharp_space_after_cast = false | ||
csharp_space_after_colon_in_inheritance_clause = true | ||
csharp_space_after_comma = true | ||
csharp_space_after_dot = false | ||
csharp_space_after_keywords_in_control_flow_statements = true | ||
csharp_space_after_semicolon_in_for_statement = true | ||
csharp_space_around_binary_operators = before_and_after | ||
csharp_space_around_declaration_statements = do_not_ignore | ||
csharp_space_before_colon_in_inheritance_clause = true | ||
csharp_space_before_comma = false | ||
csharp_space_before_dot = false | ||
csharp_space_before_open_square_brackets = false | ||
csharp_space_before_semicolon_in_for_statement = false | ||
csharp_space_between_empty_square_brackets = false | ||
csharp_space_between_method_call_empty_parameter_list_parentheses = false | ||
csharp_space_between_method_call_name_and_opening_parenthesis = false | ||
csharp_space_between_method_call_parameter_list_parentheses = false | ||
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false | ||
csharp_space_between_method_declaration_name_and_open_parenthesis = false | ||
csharp_space_between_method_declaration_parameter_list_parentheses = false | ||
csharp_space_between_parentheses = false | ||
csharp_space_between_square_brackets = false | ||
|
||
# Xml project files | ||
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}] | ||
indent_size = 2 | ||
|
||
[*.{csproj,vbproj,proj,nativeproj,locproj}] | ||
charset = utf-8 | ||
|
||
# Xml build files | ||
[*.builds] | ||
indent_size = 2 | ||
|
||
# Xml files | ||
[*.{xml,stylecop,resx,ruleset}] | ||
indent_size = 2 | ||
|
||
# Xml config files | ||
[*.{props,targets,config,nuspec}] | ||
indent_size = 2 | ||
|
||
# YAML config files | ||
[*.{yml,yaml}] | ||
indent_size = 2 | ||
|
||
# Shell scripts | ||
[*.sh] | ||
end_of_line = lf | ||
[*.{cmd,bat}] | ||
end_of_line = crlf |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
using System.CommandLine; | ||
using System.CommandLine.IO; | ||
using System.CommandLine.Parsing; | ||
using Moq; | ||
|
||
namespace Valleysoft.DockerfileSpy.Tests | ||
{ | ||
public class FromCommandTests | ||
{ | ||
public static IEnumerable<object[]> GetTestData() | ||
{ | ||
DirectoryInfo workingDir = new(Path.Combine(Environment.CurrentDirectory, "TestData", "FromCommand")); | ||
return workingDir.GetDirectories() | ||
.Select(dir => new TestScenario( | ||
dir.Name, | ||
Path.Combine(dir.FullName, "command.txt"), | ||
Path.Combine(dir.FullName, "expected-output.txt"), | ||
dir.FullName)) | ||
.Select(scenario => new object[] { scenario }); | ||
} | ||
|
||
public class TestScenario(string name, string command, string expectedOutputPath, string workingDirectory) | ||
{ | ||
public string Name { get; } = name; | ||
public string Command { get; } = command; | ||
public string ExpectedOutputPath { get; } = expectedOutputPath; | ||
public string WorkingDirectory { get; } = workingDirectory; | ||
} | ||
|
||
[Theory] | ||
[MemberData(nameof(GetTestData))] | ||
public async Task Test(TestScenario testScenario) | ||
{ | ||
Mock<IConsole> consoleMock = new(); | ||
consoleMock.Setup(o => o.Out.Write(It.IsAny<string>())); | ||
|
||
string command = File.ReadAllText(testScenario.Command); | ||
|
||
Parser parser = CommandLineParser.Create(consoleMock.Object); | ||
|
||
string savedCurrentDirectory = Environment.CurrentDirectory; | ||
try | ||
{ | ||
Environment.CurrentDirectory = testScenario.WorkingDirectory; | ||
await parser.InvokeAsync(command); | ||
|
||
string expectedOutput = File.ReadAllText(testScenario.ExpectedOutputPath); | ||
Mock.Get(consoleMock.Object.Out).Verify(o => o.Write(expectedOutput)); | ||
//consoleMock.Verify(o => o.Out.Write(expectedOutput), Times.Once); | ||
} | ||
finally | ||
{ | ||
Environment.CurrentDirectory = savedCurrentDirectory; | ||
} | ||
|
||
|
||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
global using Xunit; |
4 changes: 4 additions & 0 deletions
4
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-flat/Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
FROM base-image1 AS base | ||
RUN echo hello | ||
FROM base | ||
RUN echo world |
1 change: 1 addition & 0 deletions
1
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-flat/command.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
query from |
9 changes: 9 additions & 0 deletions
9
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-flat/expected-output.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
[ | ||
{ | ||
"imageName": "base-image1", | ||
"stageName": "base" | ||
}, | ||
{ | ||
"imageName": "base" | ||
} | ||
] |
8 changes: 8 additions & 0 deletions
8
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-graph-multi-leaf/Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
FROM base-image1 AS base | ||
RUN echo hello | ||
|
||
FROM base | ||
RUN echo world | ||
|
||
FROM base AS test | ||
RUN echo test |
1 change: 1 addition & 0 deletions
1
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-graph-multi-leaf/command.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
query from --layout graph |
28 changes: 28 additions & 0 deletions
28
...ysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-graph-multi-leaf/expected-output.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
[ | ||
{ | ||
"$id": "1", | ||
"fromInstruction": { | ||
"$id": "2", | ||
"imageName": "base", | ||
"stageName": "test" | ||
}, | ||
"parent": { | ||
"$id": "3", | ||
"fromInstruction": { | ||
"$id": "4", | ||
"imageName": "base-image1", | ||
"stageName": "base" | ||
} | ||
} | ||
}, | ||
{ | ||
"$id": "5", | ||
"fromInstruction": { | ||
"$id": "6", | ||
"imageName": "base" | ||
}, | ||
"parent": { | ||
"$ref": "3" | ||
} | ||
} | ||
] |
5 changes: 5 additions & 0 deletions
5
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-graph/Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
FROM base-image1 AS base | ||
RUN echo hello | ||
|
||
FROM base | ||
RUN echo world |
1 change: 1 addition & 0 deletions
1
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-graph/command.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
query from --layout graph |
17 changes: 17 additions & 0 deletions
17
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/multi-graph/expected-output.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
[ | ||
{ | ||
"$id": "1", | ||
"fromInstruction": { | ||
"$id": "2", | ||
"imageName": "base" | ||
}, | ||
"parent": { | ||
"$id": "3", | ||
"fromInstruction": { | ||
"$id": "4", | ||
"imageName": "base-image1", | ||
"stageName": "base" | ||
} | ||
} | ||
} | ||
] |
2 changes: 2 additions & 0 deletions
2
...eysoft.DockerfileSpy.Tests/TestData/FromCommand/single-flat-custom-path/Dockerfile.custom
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
FROM base-image | ||
RUN echo hello |
1 change: 1 addition & 0 deletions
1
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/single-flat-custom-path/command.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
query from -f Dockerfile.custom |
5 changes: 5 additions & 0 deletions
5
...soft.DockerfileSpy.Tests/TestData/FromCommand/single-flat-custom-path/expected-output.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
[ | ||
{ | ||
"imageName": "base-image" | ||
} | ||
] |
2 changes: 2 additions & 0 deletions
2
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/single-flat/Dockerfile
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
FROM base-image | ||
RUN echo hello |
1 change: 1 addition & 0 deletions
1
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/single-flat/command.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
query from |
5 changes: 5 additions & 0 deletions
5
src/Valleysoft.DockerfileSpy.Tests/TestData/FromCommand/single-flat/expected-output.txt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
[ | ||
{ | ||
"imageName": "base-image" | ||
} | ||
] |
Oops, something went wrong.