github.com/kachick/nixpkgs-url@v0.3.2-0.20230806085406-bafeb8c13c92/core_test.go (about)

     1  package core
     2  
     3  import (
     4  	"os"
     5  	"testing"
     6  )
     7  
     8  func TestGetCurrentVersionForFlakeNix(t *testing.T) {
     9  	cwd, err := os.Getwd()
    10  	if err != nil {
    11  		t.Fatalf("failed to get current working directory: %v", err)
    12  	}
    13  	t.Cleanup(func() {
    14  		err := os.Chdir(cwd)
    15  		if err != nil {
    16  			t.Fatalf("failed to rollback working directory: %v", err)
    17  		}
    18  	})
    19  	err = os.Chdir("testdata/flake")
    20  	if err != nil {
    21  		t.Fatalf("failed to walk through testdata directory: %v", err)
    22  	}
    23  
    24  	got, err := GetCurrentVersion("flake.nix")
    25  	if err != nil {
    26  		t.Fatalf("Getting the version has been failed: %s", err.Error())
    27  	}
    28  	want := "e57b65abbbf7a2d5786acc86fdf56cde060ed026"
    29  
    30  	if got != want {
    31  		t.Errorf("got %q, wanted %q", got, want)
    32  	}
    33  }
    34  
    35  func TestGetCurrentVersionForDefaultNix(t *testing.T) {
    36  	cwd, err := os.Getwd()
    37  	if err != nil {
    38  		t.Fatalf("failed to get current working directory: %v", err)
    39  	}
    40  	t.Cleanup(func() {
    41  		err := os.Chdir(cwd)
    42  		if err != nil {
    43  			t.Fatalf("failed to rollback working directory: %v", err)
    44  		}
    45  	})
    46  	err = os.Chdir("testdata/classic")
    47  	if err != nil {
    48  		t.Fatalf("failed to walk through testdata directory: %v", err)
    49  	}
    50  
    51  	got, err := GetCurrentVersion("default.nix")
    52  	if err != nil {
    53  		t.Fatalf("Getting the version has been failed: %s", err.Error())
    54  	}
    55  	want := "e57b65abbbf7a2d5786acc86fdf56cde060ed026"
    56  
    57  	if got != want {
    58  		t.Errorf("got %q, wanted %q", got, want)
    59  	}
    60  }
    61  
    62  func TestGetCurrentVersionInEmptyDir(t *testing.T) {
    63  	cwd, err := os.Getwd()
    64  	if err != nil {
    65  		t.Fatalf("failed to get current working directory: %v", err)
    66  	}
    67  	t.Cleanup(func() {
    68  		err := os.Chdir(cwd)
    69  		if err != nil {
    70  			t.Fatalf("failed to rollback working directory: %v", err)
    71  		}
    72  	})
    73  	err = os.Chdir("testdata/nothing")
    74  	if err != nil {
    75  		t.Fatalf("failed to walk through testdata directory: %v", err)
    76  	}
    77  
    78  	_, err = GetCurrentVersion("default.nix")
    79  	if !os.IsNotExist(err) {
    80  		t.Errorf("returned unexpected error: %v", err)
    81  	}
    82  }
    83  
    84  // Calling actual GitHub API, May be necessary to stub or disabling in CI
    85  func TestGetLastVersion(t *testing.T) {
    86  	got, err := GetLastVersion()
    87  	if err != nil {
    88  		t.Fatalf("Getting the last version has been failed: %s", err.Error())
    89  	}
    90  	wantLength := 40
    91  
    92  	if len(got) != wantLength {
    93  		t.Errorf("got %q, wanted %q", got, "a string that have 40 length")
    94  	}
    95  }
    96  
    97  func TestClassicTargetPath(t *testing.T) {
    98  	cwd, err := os.Getwd()
    99  	if err != nil {
   100  		t.Fatalf("failed to get current working directory: %v", err)
   101  	}
   102  	t.Cleanup(func() {
   103  		err := os.Chdir(cwd)
   104  		if err != nil {
   105  			t.Fatalf("failed to rollback working directory: %v", err)
   106  		}
   107  	})
   108  	err = os.Chdir("testdata/classic")
   109  	if err != nil {
   110  		t.Fatalf("failed to walk through testdata directory: %v", err)
   111  	}
   112  
   113  	got, err := GetTargetPath()
   114  	if err != nil {
   115  		t.Fatalf("Failed to get target files: %s", err.Error())
   116  	}
   117  	want := "default.nix"
   118  
   119  	if got != want {
   120  		t.Errorf("got %q, wanted %q", got, want)
   121  	}
   122  }
   123  
   124  func TestTargetPathMultipleCandidates(t *testing.T) {
   125  	cwd, err := os.Getwd()
   126  	if err != nil {
   127  		t.Fatalf("failed to get current working directory: %v", err)
   128  	}
   129  	t.Cleanup(func() {
   130  		err := os.Chdir(cwd)
   131  		if err != nil {
   132  			t.Fatalf("failed to rollback working directory: %v", err)
   133  		}
   134  	})
   135  	err = os.Chdir("testdata/candidates")
   136  	if err != nil {
   137  		t.Fatalf("failed to walk through testdata directory: %v", err)
   138  	}
   139  
   140  	got, err := GetTargetPath()
   141  	if err != nil {
   142  		t.Fatalf("Failed to get target files: %s", err.Error())
   143  	}
   144  	want := "flake.nix"
   145  
   146  	if got != want {
   147  		t.Errorf("got %q, wanted %q", got, want)
   148  	}
   149  }