| package pythonconfig |
| |
| import ( |
| "testing" |
| ) |
| |
| func TestFormatThirdPartyDependency(t *testing.T) { |
| type testInput struct { |
| RepositoryName string |
| DistributionName string |
| LabelNormalization LabelNormalizationType |
| LabelConvention string |
| } |
| |
| tests := map[string]struct { |
| input testInput |
| want string |
| }{ |
| "default / upper case": { |
| input: testInput{ |
| DistributionName: "DistWithUpperCase", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//distwithuppercase", |
| }, |
| "default / dashes": { |
| input: testInput{ |
| DistributionName: "dist-with-dashes", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//dist_with_dashes", |
| }, |
| "default / repeating dashes inside": { |
| input: testInput{ |
| DistributionName: "friendly--bard", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//friendly_bard", |
| }, |
| "default / repeating underscores inside": { |
| input: testInput{ |
| DistributionName: "hello___something", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello_something", |
| }, |
| "default / prefix repeating underscores": { |
| input: testInput{ |
| DistributionName: "__hello-something", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello_something", |
| }, |
| "default / suffix repeating underscores": { |
| input: testInput{ |
| DistributionName: "hello-something___", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello_something", |
| }, |
| "default / prefix repeating dashes": { |
| input: testInput{ |
| DistributionName: "---hello-something", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello_something", |
| }, |
| "default / suffix repeating dashes": { |
| input: testInput{ |
| DistributionName: "hello-something----", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello_something", |
| }, |
| "default / dots": { |
| input: testInput{ |
| DistributionName: "dist.with.dots", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//dist_with_dots", |
| }, |
| "default / mixed": { |
| input: testInput{ |
| DistributionName: "FrIeNdLy-._.-bArD", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//friendly_bard", |
| }, |
| "default / upper case / custom prefix & suffix": { |
| input: testInput{ |
| DistributionName: "DistWithUpperCase", |
| RepositoryName: "pip", |
| LabelNormalization: DefaultLabelNormalizationType, |
| LabelConvention: "pReFiX-$distribution_name$-sUfFiX", |
| }, |
| want: "@pip//prefix_distwithuppercase_suffix", |
| }, |
| "noop normalization / mixed": { |
| input: testInput{ |
| DistributionName: "not-TO-be.sanitized", |
| RepositoryName: "pip", |
| LabelNormalization: NoLabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//not-TO-be.sanitized", |
| }, |
| "noop normalization / mixed / custom prefix & suffix": { |
| input: testInput{ |
| DistributionName: "not-TO-be.sanitized", |
| RepositoryName: "pip", |
| LabelNormalization: NoLabelNormalizationType, |
| LabelConvention: "pre___$distribution_name$___fix", |
| }, |
| want: "@pip//pre___not-TO-be.sanitized___fix", |
| }, |
| "pep503 / upper case": { |
| input: testInput{ |
| DistributionName: "DistWithUpperCase", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//distwithuppercase", |
| }, |
| "pep503 / underscores": { |
| input: testInput{ |
| DistributionName: "dist_with_underscores", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//dist-with-underscores", |
| }, |
| "pep503 / repeating dashes inside": { |
| input: testInput{ |
| DistributionName: "friendly--bard", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//friendly-bard", |
| }, |
| "pep503 / repeating underscores inside": { |
| input: testInput{ |
| DistributionName: "hello___something", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello-something", |
| }, |
| "pep503 / prefix repeating underscores": { |
| input: testInput{ |
| DistributionName: "__hello-something", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello-something", |
| }, |
| "pep503 / suffix repeating underscores": { |
| input: testInput{ |
| DistributionName: "hello-something___", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello-something", |
| }, |
| "pep503 / prefix repeating dashes": { |
| input: testInput{ |
| DistributionName: "---hello-something", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello-something", |
| }, |
| "pep503 / suffix repeating dashes": { |
| input: testInput{ |
| DistributionName: "hello-something----", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//hello-something", |
| }, |
| "pep503 / dots": { |
| input: testInput{ |
| DistributionName: "dist.with.dots", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//dist-with-dots", |
| }, |
| "pep503 / mixed": { |
| input: testInput{ |
| DistributionName: "To-be.sanitized", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: DefaultLabelConvention, |
| }, |
| want: "@pip//to-be-sanitized", |
| }, |
| "pep503 / underscores / custom prefix & suffix": { |
| input: testInput{ |
| DistributionName: "dist_with_underscores", |
| RepositoryName: "pip", |
| LabelNormalization: Pep503LabelNormalizationType, |
| LabelConvention: "pre___$distribution_name$___fix", |
| }, |
| want: "@pip//pre-dist-with-underscores-fix", |
| }, |
| } |
| |
| for name, tc := range tests { |
| t.Run(name, func(t *testing.T) { |
| c := Config{ |
| labelNormalization: tc.input.LabelNormalization, |
| labelConvention: tc.input.LabelConvention, |
| } |
| gotLabel := c.FormatThirdPartyDependency(tc.input.RepositoryName, tc.input.DistributionName) |
| got := gotLabel.String() |
| if tc.want != got { |
| t.Fatalf("expected %q, got %q", tc.want, got) |
| } |
| }) |
| } |
| } |